首页 > 解决方案 > PHP MySQL 3 个表外键将数据从 1 个表连接到其他 2 个表

问题描述

我有 3 张桌子OrderCheckoutStatusStatuses。有一个外键,OrderCheckoutStatus引用了该Statuses表。

我需要加入CheckoutStatusOrder由列链接的PO,我需要加入StatusesOrder和到CheckoutStatus

这是表格中的数据

订单表

`PO` = 123456
foreign key `Statuses_id` = 2

结帐状态

`PO` = 123456
foreign key `Statuses_id` = 0

状态

`id` 0 = Complete
`id` 2 = Completed

我如何编写我的 SQL 语句才能得到这样的结果。

Order
123456
Completed
CheckoutStatus
123456
Complete

我正在使用的这条 SQL 语句不显示任何内容,除非我删除了JOIN Statuses该语句的某个部分。

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

标签: phpmysqljoinforeign-keys

解决方案


您在表状态上有两个 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

推荐阅读