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 :

Faire des Jointures "décomposées"


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 106
    Points : 59
    Points
    59
    Par défaut Faire des Jointures "décomposées"
    Bonjour a tous,

    j'expose ma demande :
    J'ai 3 tables :
    FAMILLE composé de FAMILLE_ID(identifiant), FAMILLE_NOM.........
    PARENT composé de PARENT_ID,FAMILLE_ID,PARENT_NOM .....
    ENFANT composé de ENFANT_ID,FAMILLE_ID,ENFANT_NOM .......

    Donc, ENFANT et PARENT sont liés a FAMILLE grace a FAMILLE_ID.

    Je cherche une commande SQL, qui me permettrait d'avoir comme résultat (pour une famille MARTIN avec 2 parents et 4 enfants), 7 enregitrements comportant les lignes suivantes:

    Enreg 1 : MARTIN (Enreg famille)
    Enreg 2 : MARTIN Jean (Enreg Adulte 1)
    Enreg 3 : MARTIN Claudette (Enreg Adulte 2)
    Enreg 4 : MARTIN Gilles (Enreg Enfant 1)
    Enreg 5 : MARTIN Jérome (Enreg Enfant 2)
    Enreg 6 : MARTIN Claire (Enreg Enfant 3)
    Enreg 7 : MARTIN Véronique (Enreg Enfant 4)

    en clair, voici ce que je souhaite dans la grille, les infos en gras étant les parents




    Une jointure classique de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from famille
    join adulte on adulte.FAMILLE_ID=famille.FAMILLE_ID
    join enfant on enfant.FAMILLE_ID=famille.FAMILLE_ID
    me ramenera 8 enregitrements en croisants adulte et enfant

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    ce n'est pas une jointure qu'il te faut, mais une union
    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
    19
    20
    21
    22
    select  id_famille
        ,   1   as ordre
        ,   famille_nom    as famille
        ,   ''  as nom
        ,   ''  as prenom
    from    famille
    union
    select  id_famille
        ,   2   as ordre
        ,   ''
        ,   parent_nom
        ,   parent_prenom
    from    famille
    union
    select  id_famille
        ,   3   as ordre
        ,   ''
        ,   enfant_nom
        ,   enfant_prenom
    from    famille
    order by    id_famille
            ,   ordre

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 106
    Points : 59
    Points
    59
    Par défaut
    Je m'en suis sorti effectivement aved des UNION, ça ressemeble bcp a votre réponse

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perfo : Faut-il toujours faire des jointures ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/06/2011, 18h57
  2. [Oracle] Faire des jointures dans un update
    Par romaintaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/06/2009, 16h01

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