2011-05-25 149 views
0

我有三个表。表A具有选项名称(即颜色,大小)。表B具有选项值名称(即蓝色,红色,黑色等)。表C通过将选项名称ID和选项名称值ID一起放在一起来建立关系。Mysql查询JOIN查询

我的查询需要显示值和和选项的名称,而不是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

需要两个联接,这将是这样的:

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中。

+0

谢谢。这与一个小小的更正一起工作。使用(name_id)连接option_names使用(value_id)连接options_values。我也忽略了where语句。 – Busilinks 2011-05-25 10:30:31