Php 连接两个表但每个表中记录数不同的问题
我希望有人能解释一下我的问题 我有两个与客户订单中的产品相关的表。一个表称为order_product,另一个表称为order_option。我需要连接这些表,以便将产品与相关选项相匹配。然而,并不是所有的产品都有选择,这就是我的问题所在 以下是每个表中与我的查询相关的列列表: 订单产品表:Php 连接两个表但每个表中记录数不同的问题,php,mysql,join,Php,Mysql,Join,我希望有人能解释一下我的问题 我有两个与客户订单中的产品相关的表。一个表称为order_product,另一个表称为order_option。我需要连接这些表,以便将产品与相关选项相匹配。然而,并不是所有的产品都有选择,这就是我的问题所在 以下是每个表中与我的查询相关的列列表: 订单产品表: 订单\产品\标识 订单号 名字 订购选项: 订单号 订单\产品\标识 名字 价值观 让我们假设产品A没有选项,产品B有“尺寸”选项 我目前的发言是: SELECT * FROM order_prod
- 订单\产品\标识
- 订单号
- 名字
- 订单号
- 订单\产品\标识
- 名字
- 价值观
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_选项表中,它所做的只是将“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的结果,这是唯一一个有尺寸选项的产品
本质上,这里唯一唯一的匹配是order_product_id,但由于产品A没有选项,该产品id在order_选项表中不存在,因此不会有结果。我想也许我需要某种IF-ELSE语句,但我不确定它们在MySQL中是如何工作的。我希望我在这里也不需要2个查询
感谢您的帮助
Michael将条件
op.order\u product\u id=o.order\u product\u 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;