我有3个表Order
,CheckoutStatus
和Statuses
。 Order
和CheckoutStatus
中有一个引用Statuses
表的外键。
我需要将CheckoutStatus
链接到Order
列所链接的PO
,并且需要将Statuses
链接到Order
和CheckoutStatus
以下是表中的数据
订单表
`PO` = 123456
foreign key `Statuses_id` = 2
CheckoutStatus
`PO` = 123456
foreign key `Statuses_id` = 0
状态
`id` 0 = Complete
`id` 2 = Completed
如何编写我的SQL语句,以便获得这样的结果。
Order
123456
Completed
CheckoutStatus
123456
Complete
除非删除了该语句的JOIN Statuses
部分之一,否则我正在使用的SQL语句不会显示任何内容。
SELECT * FROM `Order` JOIN `Statuses` ON Statuses.id = Order.Statuses_id JOIN `CheckoutStatus` ON Order.PO = CheckoutStatus.PO JOIN `Statuses` ON Statuses.id = CheckoutStatus.Statuses_id
答案 0 :(得分:1)
表状态上有两个JOIN。您需要使用表别名来区分这两种关系:
SELECT
`Order`.PO,
s1.Status,
s2.Status
FROM
`Order`
JOIN `Statuses` s1 ON s1.id = Order.Statuses_id
JOIN `CheckoutStatus` ON Order.PO = CheckoutStatus.PO
JOIN `Statuses` s2 ON s2.id = CheckoutStatus.Statuses_id
答案 1 :(得分:0)
这会使您感到困惑,您可以拆分查询,并根据获取的结果进一步获取
$sql4 = "SELECT * FROM `Order` JOIN `Statuses` ON Statuses.id =
Order.Statuses_id JOIN `CheckoutStatus` ON somthing"
$result4 = mysqli_query($conn, $sql4);
if (mysqli_num_rows($result4) > 0)
{
while($row3 = mysqli_fetch_assoc($result4))
{
$sql5='SELECT * FROM //the result of before joining other two '
}
}
类似的东西