Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQL jointure, récuperer deux membres

Sujet résolu
    3 octobre 2010 à 11:11:12

    Bonjour,

    J'écris un module de MP et dans ma table MP il y a bien entendu un champ destinataire et un champs expéditeur qui contiennent tout deux l'id d'un membre dans la table membre.

    Quand je récupère un MP je veux récupérer les membres qui vont avec. J'ai lu le tuto sur le jointure et j'arrive à récupérer un des deux membres mais pas les deux.

    SELECT *
    FROM mp_mp
    LEFT JOIN Membre ON Membre.idMembre = mp_mp.idRefExpediteur
    WHERE idRefDestinataire = 1;
    

    J'ai essayé plusieur choses mais les tuto sur les jointures proposent toujours des exemple très basique donc je ne trouve pas la bonne syntaxe...

    SELECT *
    FROM mp_mp
    LEFT JOIN Membre ON Membre.idMembre = mp_mp.idRefExpediteur
    LEFT JOIN Membre ON Membre.idMembre = mp_mp.idRefDestinataire
    WHERE idRefDestinataire = 1;
    

    Le deuxième problème c'est qu'en admettant que j'arrive a récupérer les deux membres comment je fais faire la différence entre eux dans les résultats renvoyés ?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2010 à 11:25:47

      Mets des alias :

      SELECT mp_mp.*, exp.pseudo AS exp_pseudo, dst.pseudo AS dsp_pseudo
      FROM mp_mp
      LEFT JOIN Membre exp ON exp.idMembre = mp_mp.idRefExpediteur
      LEFT JOIN Membre dst ON dst.idMembre = mp_mp.idRefDestinataire
      WHERE idRefDestinataire = 1;
      


      (le AS est facultatif)
      • Partager sur Facebook
      • Partager sur Twitter
        3 octobre 2010 à 11:32:35

        Et si je veux tout récupérer ? je me tape tout à la main dans une grande grande requête ?

        SELECT mp_mp.*, exp.pseudo AS exp_pseudo exp.id AS exp_id, exp.autreChamps AS exp_autreChamps, dst.pseudo AS dst_pseudo, dst.id AS dest_idMembre, dst.autreChamps AS dst_autreChamps
        FROM mp_mp
        LEFT JOIN Membre exp ON exp.idMembre = mp_mp.idRefExpediteur
        LEFT JOIN Membre dst ON dst.idMembre = mp_mp.idRefDestinataire
        WHERE idRefDestinataire = 1;
        

        C'est bien ça ?
        • Partager sur Facebook
        • Partager sur Twitter
          3 octobre 2010 à 11:39:59

          Oui, si tu veux tous les champs, va falloir user un peu les doigts XD
          • Partager sur Facebook
          • Partager sur Twitter

          SQL jointure, récuperer deux membres

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown