Bonjour,

J'ai une table (qui n'est pas de moi):

produit_element
ID_produit | ID_element | type_element
--------------------------------------
26 | 96 |0
26 | 94 |0
26 | 92 |1
92 | 13 |0

Elle contient des produits, des sous-produits et des consituants.
Un produit, c'est par exemple dans la la ligne verte l'ID 26, il possède un composant 96 car le type_element = 0.
On peut avoir des sous-produits rattaché à des produits comme dans la ligne bleu (ID_element 92) car type_element = 1.

Mon soucis, c'est de récupérer tous les conctituants d'un produit. Il me faut imbriquer un select dans un select (enfin je pense) pour atteindre le constituant ayant pour ID_element = 13.

J'en suis là pour le moment:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(
   SELECT distinct c.ID, c.reference
   FROM constituant c, produit_element pe
   WHERE pe.ID_produit = 123
   AND pe.ID_element = c.ID
   AND pe.type_element = 0
)
UNION
(
   SELECT distinct c.ID, c.reference
   FROM constituant c, produit_element pe
   (
      SELECT distinct pe.ID_element
      FROM produit_element pe
      WHERE pe.ID_produit = 123
      AND pe.type_element = 1
   ) AS sp
   WHERE pe.ID_produit = sp.ID_element
   AND pe.ID_element = c.ID
   AND pe.type_element = 0
)
et cela me donne une erreur:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT distinct pe.ID_element FROM produit_element pe WHE' at line 12

Je poursuis ma recherche/apprentissage, mais une petite aide n'est pas de refus. Merci d'avance.

edit:
A oui j'ai oublié d'expliquer que la table "constituant" me permet de transformer l'ID_element en reference plus lisible genre "CARTE ETOR". La valeur 123 correspond à un ID_produit ayant des constituant directement et des sous-produits.