sql - SQL查询两次加入同一个父表
问题描述
我的数据库中有两个表:
餐桌航班:
ID
ID_Destination
ID_Source
表位置:
ID (that relatesto the id of source and destination)
Name
Country
Etc..
现在我需要一个查询,它可以为我提供从某个来源到某个目的地的所有航班的信息。我在查询编辑器中尝试了很长时间,但内部连接在这里不起作用。我应该改用什么?
因此,我需要类似的东西:
1st flight: Naples Italy |London England
2nd flight: Rome Italy | Mailand Italy
etc..
解决方案
下一个内部连接应该在这里工作:
SELECT f.ID, CONCAT(sl.Name, ' ', sl.Country), CONCAT(dl.Name, ' ', dl.Country)
FROM Flights as f
INNER JOIN Locations as sl ON sl.ID = f.ID_Source
INNER JOIN Locations as dl ON dl.ID = f.ID_Destination
函数“CONCAT”是MySql的一部分,所以这个函数不能适用于所有数据库,没有它只是:
SELECT f.ID, sl.Name, sl.Country, dl.Name, dl.Country
FROM Flights as f
INNER JOIN Locations as sl ON sl.ID = f.ID_Source
INNER JOIN Locations as dl ON dl.ID = f.ID_Destination
推荐阅读
- iis-7.5 - IIS 上已停止网站的自定义 404 错误页面
- angular - 单击时如何防止垫子扩展面板打开?
- javascript - 如何在 react native 中将值从 promise 传递给组件 prop?
- c# - 从 .net core 2.2 迁移到 .net core 3.0 后打破视图
- java - Hibernate 注释:具有共享复合键属性的多对多
- php - 如何在 yii2 中返回数组值?
- dotnetnuke - DNN 站点在 dot net nuke 版本中运行缓慢 - 9.4.1
- file - 新创建的 Flutter App 的文件夹和文件说明?
- python - 根据多个条件过滤行
- prometheus-alertmanager - 进程使用过多 CPU 时,prometheus 中带有警报规则的进程导出器