php - PHP MySQL 3 个表外键将数据从 1 个表连接到其他 2 个表
问题描述
我有 3 张桌子Order
、CheckoutStatus
和Statuses
。有一个外键,Order
它CheckoutStatus
引用了该Statuses
表。
我需要加入CheckoutStatus
到Order
由列链接的PO
,我需要加入Statuses
到Order
和到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
解决方案
您在表状态上有两个 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
推荐阅读
- ansible-awx - AWX 9.1.1:j2 render Playbook 运行成功,但不会将结果写入目录;从 CLI 运行正常
- python - 如何标记单词并将它们输入到另一个文件中?
- c++ - 错误:“getValue 的左侧必须有类/结构/联合”
- google-apps-script - 从 App 脚本使用 Measurement Protocol 向 Google Analytics 发出 POST 请求返回有效响应,但不起作用
- r - “类矩阵”的(精确)含义是什么?
- python - 使用枚举循环遍历多个列表?
- javascript - 在 div 中找到第一个 pre 标记,然后删除前导空格
- math - 将十进制数转换为浮点表示法和 IEEE 754 格式
- loops - 脚本未通过所有迭代运行,并陷入循环
- angular - 按照角度教程,重定向似乎是附加页面而不是替换