我希望有人能对我的问题有所了解。
我有两张与客户订单中的产品相关的表。一个表称为order_product,另一个表称为order_option。我需要加入这些表以便使产品与相关选项相匹配。然而,并不是所有的产品都有选择,这就是我的问题所在。
下面是每个表中与我的查询相关的列的列表:
订单产品表:
订单号
订单号
名称
订购选项:
订单号
订单号
名称
价值
假设我有没有选择的产品A,和有“尺寸”选择的产品B。
我现在的陈述是:

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

但是,由于order ID 1在order_option表中,它所做的只是将“Size”选项附加到这两个产品上。
然后我试着:
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的结果,只有一个有尺寸选项。
本质上,这里唯一的匹配是OrjyProduct TytID,但是因为产品A没有选项,因此OrthyOutlook表中不存在产品ID,因此不能有结果。我想也许我需要一些IF-ELSE语句,但我不确定它们在MySQL中是如何工作的。我希望这里不需要2个问题。。。。
感谢您的帮助,谢谢!
迈克尔

最佳答案

将条件op.order_product_id = o.order_product_id移到JOIN 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;

关于php - 连接两个表但每个表中记录数不同的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32397518/

10-16 18:52