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
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 ?
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;
Tout d'abord, évite d'utiliser l'ancienne syntaxe des jointures. La nouvelle (INNER JOIN) est en vigueur depuis 1992.
Fichtre , 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
× 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.