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 :

jointure sur 3 tables


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut jointure sur 3 tables
    Bonsoir,

    Question qui va être simple pour vous :
    Je suis sous mySQL 4.1.13

    J'ai 3 tables : Agenda, Message et AgendaMessage.
    Vous vous en doutez, AgendaMessage est la table qui fait correspondre les messages aux agendas.

    Je voudrais faire apparaitre tous les messages associés aux agendas, mais je souhaiterais aussi afficher les agendas qui n'ont pas de message associé, comment faire ??

    Pour le moment, ma requete est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select agenda.entete, message.message from agenda, message,agendamessage where agenda.pk=agendamessage.agenda and message.pk=agendamessage.message
    Pour le moment, la requete ci dessous affiche tous les agendas qui ont des messages associés, je voudrais le reste des agendas
    Je ne pense pas que la solution soit bien compliquée, mais ce soir, je suis sec

    Merci pour votre aide et bonne soirée

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: jointure sur 3 tables
    Citation Envoyé par jojo22222
    Je voudrais faire apparaitre tous les messages associés aux agendas, mais je souhaiterais aussi afficher les agendas qui n'ont pas de message associé, comment faire ??
    3 mots:
    LEFT OUTER JOIN !!!

  3. #3
    Membre actif Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Points : 219
    Points
    219
    Par défaut
    Oui, comme ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT TABLE1.CHAMP1, TABLE1.CHAMP2,
    TABLE2.CHAMP1, TABLE2.CHAMP2, TABLE2.CHAMP3,
    TABLE3.CHAMP1
    FROM TABLE1
    LEFT OUTER JOIN TABLE2
    ON TABLE1.IDT2=TABLE2.ID
    LEFT OUTER JOIN TABLE3
    ON TABLE1.IDT3=TABLE3.ID;

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Oui la jointure gauche est ton ami pour faire ce genre de manipulation. Elle permet de prendre une table en référence. Ca permet donc d'afficher meme les lignes qui n ont pas de valeur.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Je comprends vite, mais faut m'expliquer longtemps
    J'ai pas tout compris, j'ai bien pensé à faire un left outer join, MAIS le problème, c'est que je fais référence à 3 tables et c'est la table agendamessage qui me permet de faire une jointure (n,n) sur la table agenda et la table message.

    Comment je dois faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select agenda.entete, message.message from agenda left outer join agendamessage on agenda.pk=agendamessage.agenda
    et l'autre jointure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message.pk=agendamessage.message
    , je la mets comment ???
    sachant que c'est sur les tables message et agendamessage et non plus agenda !!!!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 24
    Points : 13
    Points
    13
    Par défaut OK
    bon ok voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select agenda.entete, message.message from agenda left outer join agendamessage on agenda.pk=agendamessage.agenda left outer message join on message.pk=agendamessage.message
    Ce que je ne comprends pas c'est le 2eme left outer join, il jointure par rapport au résultat de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select agenda.entete, message.message from agenda left outer join agendamessage on agenda.pk=agendamessage.agenda
    il jointure par rapport à quoi ?? Par ce qu'il ne peut pas jointurer sur agenda et agendamessage , pourtant c'est comme ca que je l'aurais compris

Discussions similaires

  1. Problème de Jointure sur 2 tables
    Par Andry dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2006, 13h20
  2. Jointure sur 3 tables
    Par tonymontana4192 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/11/2005, 13h24
  3. [MySQL] Jointure sur une table déjà jointe
    Par genova dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/10/2005, 23h54
  4. jointure sur TROIS tables
    Par caribou_belle dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2004, 11h20
  5. Jointure sur 2 tables de bases différentes
    Par Celina dans le forum Langage SQL
    Réponses: 10
    Dernier message: 10/11/2003, 11h56

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