2011-05-25 6 views
0

J'ai trois tables. Le tableau A a le nom de l'option (c'est-à-dire la couleur, la taille). Le tableau B a un nom de valeur d'option (par exemple, bleu, rouge, noir, etc.). Le tableau C établit la relation en plaçant l'identifiant de l'option et l'identifiant de la valeur du nom de l'option dans une rangée.Requête Mysql JOIN Query

Ma requête doit afficher les noms des valeurs et des options par opposition au numéro d'identification. Je peux faire A et B un à la fois et obtenir une liste de noms de valeur et d'options, mais puisque la valeur et les options sont liées, je veux une liste combinée. Par exemple.

Couleur - Bleu Couleur - Rouge Taille - Big Taille - Petit

Donc, ma question est de savoir comment joindre ces deux requêtes pour obtenir un résultat combiné comme ci-dessus.

SELECT products_options.products_options_name FROM products_options 
LEFT JOIN products_options_values_to_products_options ON products_options_values_to_products_options.products_options_id=products_options.products_options_id 

SELECT products_options_values.products_options_values_name FROM products_options_values 
LEFT JOIN products_options_values_to_products_options ON products_options_values_to_products_options.products_options_values_id=products_options_values.products_options_values_id 

Répondre

1

Vous avez besoin de deux jointures, qui ressemblera à ceci:

select product_options.product_id, 
     option_names.name_id, 
     option_names.name, 
     option_values.value_id, 
     option_values.name 
from product_options 
join option_names using (option_id) 
join option_values using (option_id) 
where product_options.product_id = :product_id 

Il ne sera pas les combiner ensemble pour un insert immédiat dans le tableau de votre variations, mais c'est le meilleur que vous allez faire en MySQL.

+0

Merci. Cela a fonctionné avec une correction mineure. joignez option_names en utilisant (name_id) rejoindre options_values ​​en utilisant (value_id). J'ai également omis l'instruction where. – Busilinks