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 :

questions sur une jointure


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 26
    Points : 17
    Points
    17
    Par défaut questions sur une jointure
    bonjour tout le monde,

    j'ai la réquête suivante.
    Pour vous expliquer le fonctionnement rapidement, je voudrais retrouver tous les éléments de TExec même ceux pour lesquels il n'y a pas d'axe ayant l'identifiant 2. Pour ceux qui n'ont pas d'axe 2, je veux que TGrpTypeAxe.idGrpTypeAxe soit NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select TExec.id, TExec.nom, TGrpTypeAxe.idGrpTypeAxe FROM TExec
    	JOIN TEquipPack
    	ON TEquipPack.idMos = TExec.id
    		JOIN TPackTypeAxe
    		ON TPackTypeAxe.idPack = TEquipPack.id
    			JOIN TTypeAxe
    			ON TTypeAxe.id = TPackTypeAxe.idTypeAxe
    				JOIN TGrpTypeAxe
    				ON TGrpTypeAxe.id = TTypeAxe.idGrpTypeAxe
    					JOIN TAxe
    					ON TAxe.id = TGrpTypeAxe.idAxe
    	WHERE TAxe.id = 2 AND TPackTypeAxe.numAxe = 1;
    J'ai pensé à des jointures externes mais je sais pas comment faire.

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Quelque chose comme ça ?
    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
     
    select TExec.id, TExec.nom, TGrpTypeAxe.idGrpTypeAxe FROM TExec
        JOIN TEquipPack
        ON TEquipPack.idMos = TExec.id
            JOIN TPackTypeAxe
            ON TPackTypeAxe.idPack = TEquipPack.id
                JOIN TTypeAxe
                ON TTypeAxe.id = TPackTypeAxe.idTypeAxe
                    LEFT JOIN TGrpTypeAxe
                    ON TGrpTypeAxe.id = TTypeAxe.idGrpTypeAxe
                    AND TPackTypeAxe.numAxe = 1
                        INNER JOIN TAxe
                        ON TAxe.id = TGrpTypeAxe.idAxe
                        AND TAxe.id = 2
    ;

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    Non ca ne fonctionne pas

    quelqu'un peut m'aider ??

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    La solution proposée ne peut pas fonctionner car on fait encore référence par les jointures aux éléments ayant comme id d'axe le n°2.

    Qqun a une autre idée ?

    En tous cas merci pour votre aide

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 400
    Points
    28 400
    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
    15
    16
    17
    18
    19
    20
    21
    SELECT  TExec.id
        ,   TExec.nom
        ,   CASE WHEN TAxe.id IS NULL THEN NULL ELSE TGrpTypeAxe.idGrpTypeAxe END AS  idGrpTypeAxe
    FROM    TExec
        INNER JOIN 
            TEquipPack
            ON  TEquipPack.idMos = TExec.id
        INNER JOIN 
            TPackTypeAxe
            ON  TPackTypeAxe.idPack = TEquipPack.id
        INNER JOIN 
            TTypeAxe
            ON  TTypeAxe.id = TPackTypeAxe.idTypeAxe
        INNER JOIN  
            TGrpTypeAxe
            ON  TGrpTypeAxe.id = TTypeAxe.idGrpTypeAxe
        LEFT JOIN 
            TAxe
            ON  TAxe.id = TGrpTypeAxe.idAxe
    WHERE   TPackTypeAxe.numAxe = 1
        AND COALESCE(TAxe.id, 2) = 2

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    Ca marche pas. J'ai toujours les mêmes résultats

    Pour vous donner un peu plus précisé :
    voilà un exemple :

    ID NOM IDAXE IDGRPTYPEAXE
    1 TOTO 001 1 0
    2 TOTO 002 1 0
    3 TOTO 004 1 0
    15 TEST 1 0
    1 TOTO 001 2 15
    2 TOTO 002 2 18
    3 TOTO 004 2 21
    1 TOTO 001 3 0
    2 TOTO 002 3 0
    3 TOTO 004 3 0
    15 TEST 3 0

    On voit bien que pour le nom TEST, on a l'élément quand idAxe = 2
    donc dans ma requete, on voudrait obtenir
    1 TOTO 001 2 15
    2 TOTO 002 2 18
    3 TOTO 004 2 21
    15 TEST 2 NULL


    J'espère que vous pourrez m'aider.
    Merci de votre aide

Discussions similaires

  1. Question sur une jointure
    Par JohnSheppard dans le forum Langage SQL
    Réponses: 8
    Dernier message: 28/06/2013, 11h16
  2. [WD15] Questions théorique sur une jointure
    Par EriCstoFF dans le forum WinDev
    Réponses: 3
    Dernier message: 07/12/2010, 14h03
  3. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55
  4. limitation du nombre d'enregistrement sur une jointure
    Par coredump dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2005, 16h13
  5. un count sur une jointure et ca ne fonctionne pas
    Par elbronziero dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/10/2004, 11h23

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