IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[debutant]Batir une requete


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut [debutant]Batir une requete
    Soit 3 tables

    Table principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ID  ID_normal   ID_extra
    1	  2	     0
    2	  1	     0
    3	  0	     1
    4	  0	     2
    ......
    Table normale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ID_normal  nom_normal    	 Ville 
    1	       Rene		 Caen	
    2	       Jean		 Paris
    .......
    Table extra

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ID_extra   nom_extra	 	Age     Enfants 
    1	      Pierre		 10         2
    2	      Paul		 30	    3



    Voici le résultat attendu apres requete sur la table principale
    si ID_normal > 0 je prends les noms correspondants dans Table normale
    si ID_extra > 0 je prends les noms correspondants dans Table extra

    Nb : les tables normal et extra n'ont pas le meme nombre de colonnes

    Merci à tous

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    La requête ci-dessous devrait donner des valeurs NULL aux colonnes lorsque la jointure n'est pas satisfaite.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT n.ID_normal, n.nom_normal, n.Ville, e.ID_extra, e.nom_extra, e.Age, e.Enfants
    FROM principal p
    LEFT JOIN normale n ON p.ID_normal = n.ID_normal
    LEFT JOIN extra e ON p.ID_extra = e.ID_extra
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Par défaut Essaye celle la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE TABLE result  AS
    select 
       a.*,
       b.Ville,
       c.Age,
       c.Enfants,
    CASE WHEN  a.ID_normal > 0  then  b.nom_normal   
            WHEN  a.ID_normal = 0  then c.nom_extra 
    end as nom  
     
    from principale a
        left join
        normale b
    on a.ID_normal=b.ID_normal
        left join
        extra c
    on a.ID_extra=c.ID_extra ;
    QUIT;

Discussions similaires

  1. [debutant] batir une requete
    Par pierre50 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/11/2007, 12h58
  2. [debutant] Batir une requete
    Par pierre50 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/11/2007, 18h43
  3. [debutant] Batir une requete
    Par pierre50 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/11/2007, 18h41
  4. Batir une requete
    Par pierre50 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/11/2007, 11h22
  5. [Debutant]creer une requete pour une liste deroulante
    Par torNAdE dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/07/2006, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo