gpt4 book ai didi

mysql - 如果匹配在所有四个表中,则内部连接仅返回值

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:47 25 4
gpt4 key购买 nike

我有以下 INNER JOIN 语句,它仅在所有四个表都匹配其中的订单号时才返回结果。

我需要它包含主表 KC_Orders 中的每个结果,而不管 $sql 中每个 INNER JOIN 表的等效内容

我知道这是 INNER JOIN 的重点,但我需要它做其他事情。

  $sql = "SELECT * 
FROM `KC_Orders`
INNER JOIN `KC_Payments`
ON KC_Orders.orderNumber = KC_Payments.orderNumber
INNER JOIN `KC_OrderStatus`
ON KC_Orders.orderNumber = KC_OrderStatus.orderNumber
INNER JOIN `KC_Statuses`
ON KC_OrderStatus.statusID = KC_Statuses.statusID";
$AllOrders = $db->query($sql);

最佳答案

使用左外连接

SELECT *
FROM
`KC_Orders`
LEFT JOIN `KC_Payments`
ON KC_Orders.orderNumber = KC_Payments.orderNumber
LEFT JOIN `KC_OrderStatus`
ON KC_Orders.orderNumber = KC_OrderStatus.orderNumber
LEFT JOIN `KC_Statuses`
ON KC_OrderStatus.statusID = KC_Statuses.statusID

如果总是有可用的状态,您可以保留 KC_Statuses 表的内部连接


SELECT *
FROM
A
LEFT JOIN B
ON A.id = B.id

... 表示将返回 A 中的所有记录,并且只返回与 A 中的记录匹配的 B 中的记录。即使 B 中没有匹配的记录,也会返回来自 A 的记录。

关于mysql - 如果匹配在所有四个表中,则内部连接仅返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805245/

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