mysql - 带有 2 个外键的 SQL LEFT-JOIN 并将它们合并为一行(MySQL)
问题描述
我有以下表格
订单:
id | address1 | address2 | state
1 | 2 | 4 | Delivered
2 | 7 | 1 | Payment
地址:
id | city
1 | New York
2 | Paris
4 | London
7 | Berlin
现在我需要一个声明来获得两个城市的订单状态。
例如订单 ID 1 应输出:
Delivered | Paris | London
我尝试了以下语句:
SELECT orders.state, address.city FROM orders
LEFT JOIN address
ON orders.address1 = address.id OR orders.address2 = address.id;
它显然只输出一个地址城市,但我想要两个。
知道声明应该是什么样子吗?
解决方案
你可以这样做self join
:
select o.status, ad.city, ad1.city
from Orders o
left join Address ad on ad.id = o.address1
left join Address ad1 on ad1.id = o.address2;
推荐阅读
- react-native - 如何使用 on-press 打开 JavaScript 文件(反应原生应用程序)
- python - 烧瓶变量未显示在我的 html 中
- java - 如何在spring-hibernate中动态绕过字段上的验证
- java - Java Process 没有输出到标准输出
- python - 如何在 Python 中修改 def 的行为?
- php - Detect PHP code in files with mixed content (PHP/HTML) by PHP for Obfuscate?
- angularjs - 自定义集群标记谷歌地图AngularJS2
- php - PHP方括号数组添加另一个变量
- javascript - 在 Laravel 模型中放置 javascript 警报 - 无法从 Laravel 模型中发出警报消息
- php - 如何使用以下元标记来重定向用户