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 :

double jointure sur la meme table


Sujet :

Langage SQL

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut double jointure sur la meme table
    Salut alors voici le topo, j'ai une table intervention, une table personne et une table type_personne

    intervention:
    id : 100
    id_infirmier: 1
    id_astreinte: 3

    personne :
    id:1
    nom: bob
    prenom:billy
    id_type:1

    id:3
    nom:pepere
    prenom: robert
    id_type:2

    type_personne:
    id:1
    lib:infirmier

    id:2
    lib:medecin




    En fait je voudrais faire une requete permettant de recuperer les noms et prenom de l'infirmier et du medecin d'astreinte et je ne vois pas comment faire :/


    Si vous avez une idée?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    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 111
    Points : 28 459
    Points
    28 459
    Par défaut
    Avec des alias ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  ntv.*
        ,   inf.*
        ,   ast.*
    FROM    intervention    AS ntv
        INNER JOIN
            personne    AS inf
            ON  ntv.id_infirmier = inf.id
        INNER JOIN
            personne    AS ast
            ON  ntv.id_astreinte = ast.id

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    hum ok pour la jointure interne, mais pour corser la chose,je dois maintenant effectuer cette jointure mais aussi des jointures "normales" avec d'autres tables :
    intervention (id,id_infirmier,id_type_intervention,id_motif_depart,nb_impliques,date_intervention,id_astreinte)
    personne ( id_nom,prenom)
    type_intervention(id,lib)
    motif_depart(id_lib)


    J'ai commencé comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select  * from INTERVENTION,PERSONNE,TYPE_INTERVENTION,MOTIF_DEPART,CIRCONSTANCE
     where INTERVENTION.ID_MOTIF_DEPART=MOTIF_DEPART.ID_MOTIF_DEPART
      and INTERVENTION.ID_TYPE_INTERVENTION=TYPE_INTERVENTION.ID_TYPE_INTERVENTION
       and INTERVENTION.ID_CIRCONSTANCE = CIRCONSTANCE.ID_CIRCONSTANCE
    Mais pour incorporer le inner join j'avoue que j'ai du mal



    PS: SQL sous Oracle

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    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 111
    Points : 28 459
    Points
    28 459
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT  * 
    FROM     intervention
        INNER JOIN
            type_intervention
            ON    intervention.id_type_intervention = type_intervention.id_type_intervention
        INNER JOIN
            motif_depart
            ON    intervention.id_motif_depart = motif_depart.id_motif_depart
        INNER JOIN
            circonstance
               ON    intervention.id_circonstance = circonstance.id_circonstance
        INNER JOIN
            personne
            ON    ????
    Cours sur les Jointures en SQL

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    Je viens de tester ceci :
    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
    SELECT  * 
    FROM     intervention
        INNER JOIN
            type_intervention
            ON    intervention.id_type_intervention = type_intervention.id_type_intervention
        INNER JOIN
            motif_depart
            ON    intervention.id_motif_depart = motif_depart.id_motif_depart
        INNER JOIN
            circonstance
               ON    intervention.id_circonstance = circonstance.id_circonstance
        INNER JOIN
            personne   AS inf
            ON  ntv.id_infirmier = inf.id
        INNER JOIN
            personne    AS ast
            ON  ntv.id_astreinte = ast.id
    Et il me met mot clé absent sur le AS, ca vient peut etre de Oracle je sais pas trop :/


    Et si j'enleve les deux AS , il met met une erreur :
    "INF"."ID" identificateur non valide....

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    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 111
    Points : 28 459
    Points
    28 459
    Par défaut
    La colonne id existe bien dans personne ?

Discussions similaires

  1. Double jointure sur une meme table
    Par ecarbill dans le forum Requêtes
    Réponses: 7
    Dernier message: 17/02/2011, 18h36
  2. Union ou jointure sur la meme table ?
    Par chris92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/07/2007, 16h44
  3. [MySQL] Plusieurs jointures sur une même table
    Par stephyyr dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 14h24
  4. Plusieurs jointures sur la meme table [complexe]
    Par Wells dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/06/2006, 11h41
  5. DOUBLE REQUETE SUR UNE MEME TABLE
    Par MORAS dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/01/2006, 13h40

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