我有三张 table 。表 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
最佳答案
您需要两个联接,如下所示:
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 中所能做的最好的事情。
关于Mysql 查询 JOIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122528/