Mysql查询JOIN查询

时间:2011-05-25 09:52:23

标签: mysql join

我有三张桌子。表A具有选项名称(即颜色,大小)。表B具有选项值名称(即蓝色,红色,黑色等)。表C通过将选项名称id和选项名称值id放在一行来建立关系。

我的查询需要显示值和选项的名称,而不是ID号。我可以一次做一个A和B并得到一个值和选项名称列表,但由于值和选项是相关的,我想要一个组合列表。例如。

颜色 - 蓝色 红色 大小 - 大 尺寸 - 小

所以我的问题是如何加入这两个查询以获得如上所述的组合结果。

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

1 个答案:

答案 0 :(得分:1)

您需要两个连接,如下所示:

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

它不会将它们组合在一起,以便在变体表中立即插入,但这是你在MySQL中最好的。