gpt4 book ai didi

php - 连接两个表但每个表中记录数不同的问题

转载 作者:行者123 更新时间:2023-11-29 01:54:42 25 4
gpt4 key购买 nike

我希望有人能够阐明我的问题。

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

以下是每个表中与我的查询相关的列的列表:

order_product table:

  • order_product_id
  • order_id
  • name

order_option:

  • order_id
  • order_product_id
  • name
  • value

假设我有没有选项的产品 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表中,所以它所做的只是将“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 没有选项,因此 order_option 表中不存在该产品 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com