2015-09-04 44 views
2

我希望有人能够阐明我的问题。加入两个表格但每个记录的数量不同的问题

我有两个表格与客户订单中的产品相关。一个表称为order_product,另一个表为order_option。我需要加入这些表格才能使产品与相关选项相匹配。但是,并非所有产品都有选择,这就是我的问题所在。

下面是从每个表持有的相关性在我的查询列的列表:

order_product表:

  • order_product_id
  • ORDER_ID

order_option:

  • ORDER_ID
  • order_product_id

远的不说,我有产品A具有任何选项,并有一个 “大小” 选项B产品。

我现在的说法是:

SELECT * FROM order_product op 
LEFT JOIN order_option o ON o.order_id = op.order_id 
WHERE op.order_id = 1 

但是,由于这样的事实:1的顺序ID是在order_option表,它是所有附加的“大小”选项,这两种产品。

我然后设法:

SELECT * FROM oc49_order_product op 
LEFT JOIN oc49_order_option o ON o.order_id = op.order_id 
WHERE op.order_id = 1 AND op.order_product_id = o.order_product_id 

但当时我只得到了B产品中,唯一一个与大小选择的结果。

本质上,唯一唯一匹配是order_product_id,但由于产品A没有选项,因此该产品ID不存在于order_option表中,因此不会有结果。我在想也许我需要某种IF ELSE语句,但我不确定它们在MySQL中是如何工作的。我希望我不需要2个查询在这里也....

任何帮助表示赞赏,谢谢!

迈克尔

回答

3

移动状态op.order_product_id = o.order_product_idJOIN ON条款,而不是像WHERE

SELECT op.* FROM oc49_order_product op 
LEFT JOIN oc49_order_option o ON o.order_id = op.order_id 
AND op.order_product_id = o.order_product_id 
WHERE op.order_id = 1; 
相关问题