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

Requêtes MySQL Discussion :

Jointures sur deux tables


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 227
    Points
    227
    Par défaut Jointures sur deux tables
    Bonjour,

    Me revoilà encore

    J'aurais besoin d'aide, pour une jointure sur deux tables.

    Un petit descriptif basique de mes trois tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    table identite
    ---------------------
    id | nom |  etc ....
    --------------------
     
    table relation
    -----------------------------
    id | id_identite |  id_autre |
    -----------------------------
     
    table part
    ----------------------------------------------------
    id | id_relation | id_form (enum 1, 2, 3 )|  etc ....
    ----------------------------------------------------
    Paramètres connus :

    Je suis l'id_form 2 dans la table part.
    n° de l'id_autre dans la table relation, 3 par exemple.

    Le résultat que je désire obtenir :

    Sélection du pseudo dans la table identite où l'id d'identite correspond à l'id_identite de la table relation et l'id_relation de la table part correspond à l'id de la table relation SEULEMENT si id_form ne vaut pas 2.

    C'est pas facile à expliquer, j'espère que je me suis fait comprendre.

    J'ai essayé un truc de ce style, mais ça ne me renvoi aucun résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nom FROM identite AS I
    LEFT OUTER JOIN relation AS R
    ON R.id_identite = I.id
    LEFT OUTER JOIN part AS P
    ON P.id_relation = R.id
    WHERE R.id_autre = 3
    AND P.id_form = 2
    AND NOT EXISTS R.id
    Un petit coup de main ne serait pas de refus

    Merci.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    pourquoi ne pas essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom FROM identite AS I
    LEFT OUTER JOIN relation AS R
    ON R.id_identite = I.id
    LEFT OUTER JOIN part AS P
    ON P.id_relation = R.id
    WHERE NOT P.id_form = 2
    à moins qu'il y ait un bout que j'ai pas compris ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 227
    Points
    227
    Par défaut
    Merci, je viens d'essayer plusieurs combinaisons, mais aucune ne me retourne de résultat alors que ça devrait m'en retourner 3.

    Je n'ai ajouter qu'une clause dans le where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom FROM identite AS I
    LEFT OUTER JOIN relation AS R
    ON R.id_identite = I.id
    LEFT OUTER JOIN part AS P
    ON P.id_relation = R.id
    WHERE NOT P.id_form = 4 AND R.id_autre = 2
    Je vais vous faire un shema car j'ai un peu de mal a expliqué par des mots le résultat que je veux obtenir.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 227
    Points
    227
    Par défaut
    Voilà, un shema :



    Comme vous le voyez dans ces tables, seul le juge 3 n'a pas noté tous les id de la table joueur_concours puisqu'il n'a pas noté l'id_joueur_concours 3 et l'id_joueur_concours 4

    Donc ce que je veux savoir avec une requête en remontant dans mes tables, c'est trouvé le nom des joueurs assosiés à l'id de joueur_concours.

    Sachant que je connais l'id du juge.

    Est-ce que vous comprenez mieux ?

    Merci

  5. #5
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Petit conseil hors sujet : Au niveau de vos tableau préférez nommer la clef primaire selon ce schéma : ID_nom_table plutôt que de simplement le nommer ID.

    Sinon j'ai mieux compris, j'y réfléchis.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 227
    Points
    227
    Par défaut
    Ah oui, j'ai jamais pensé à mettre le nom de la table sur l'id, et j'ai rarement vu ça, mais c'est vrai que l'on s'y retrouvera mieux après.

    Merci c'est adopté !

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 227
    Points
    227
    Par défaut
    Bon, je pense avoir résolu mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom FROM joueur AS JO
    LEFT OUTER JOIN joueur_concours AS JC
    ON JO.id = JC.id_joueur
    RIGHT OUTER JOIN juge AS JU
    ON JC.id = JU.id_joueur_concours
    WHERE JU.id_juge != 3;
    Vous pensez que c'est correct ?

    Merci de votre aide et vos conseils

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

Discussions similaires

  1. Jointure sur deux tables de schema differents
    Par tatayet_le_felee dans le forum SQL
    Réponses: 4
    Dernier message: 24/03/2009, 10h40
  2. une non equi-jointure sur deux tables
    Par AliJava dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/06/2008, 15h26
  3. jointure sur deux table
    Par mioke dans le forum SAS Base
    Réponses: 10
    Dernier message: 13/03/2008, 16h24
  4. [Requête] Jointure sur deux tables.
    Par Invité dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/11/2007, 11h36
  5. Jointure sur deux tables
    Par shinji_rem dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/04/2007, 10h18

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