Partage
  • Partager sur Facebook
  • Partager sur Twitter

SELECT sur 2 tables avec double référence

Sujet résolu
    11 juin 2010 à 16:11:53

    Bonjour à tous,

    J'ai un petit problème que je sais pas résoudre (ni si c'est possible d'ailleurs...

    Je souhaite faire une seule requête (SELECT) sur 2 tables avec une jointure et sélectionné 2 fois un champ selon la valeur de 2 champs distinct de la 1ere table o_O

    Je la refais avec un exemple parce que là, je suis pas sûr du tout que tout le monde m'ait suivi :
    - J'ai 2 table : "produits" et "matieres"...
    - ma table produit comprend (entre autre) des champs "id", "nom_produit", "matiere_interieure_id" et "matiere_exterieure_id"...
    - ma table matière contient bêtement "id" et "nom_matiere"

    Je souhaite récupérer pour un produit : le nom du produit, le nom de la matière intérieure, et le nom de la matière extérieure...

    Avec une seule matière j'aurais fait une requête genre :
    SELECT p.id, p.nom_produit, m.nom_matière
    FROM table_produit p, table_matière m
    WHERE p.matiere_id = m.id_matiere
    


    Mais avec plusieurs matières, je ne voit pas comment faire (si ce n'ai en faisant plusieurs requêtes)...

    Quelqu'un aurait-il une idée pour faire ce genre de chose en une seule requête ?
    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2010 à 19:35:52

      Tout d'abord, évite d'utiliser l'ancienne syntaxe des jointures. La nouvelle (INNER JOIN) est en vigueur depuis 1992.

      Pour résoudre ton problème, il te suffit de faire plusieurs jointures sur la même table.

      SELECT p.id, p.nom_produit, m.nom_matiere, a.nom_matiere AS nomMatiereInterieure, t.nom_matiere AS nomMatiereExterieure
      FROM table_produit p
      INNER JOIN table_matiere m
          ON p.matiere_id = m.id_matiere
      INNER JOIN table_matiere a
          ON p.matiere_interieure_id = a.id_matiere
      INNER JOIN table_matiere t
          ON p.matiere_exterieure_id = t.id_matiere;
      
      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2010 à 14:41:04

        Merci beaucoup !

        Citation : Fayden

        Tout d'abord, évite d'utiliser l'ancienne syntaxe des jointures. La nouvelle (INNER JOIN) est en vigueur depuis 1992.



        Fichtre o_O , j'ai appris avec cette méthode en 2002... Et elle est toujours mise en avant dans les manuel (MySQL entre autre)... Mais il est vrai qu'avec des requêtes dans ce genre sur plusieurs tables, c'est tout de même plus lisible !

        Merci pour ta solution, elle marche nikel ! C'est bête, mais je n'avait même pas penser à faire plusieurs alias d'une même table :lol:
        • Partager sur Facebook
        • Partager sur Twitter

        SELECT sur 2 tables avec double référence

        × 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