如何进行查询,从 1 行中选择大部分数据,但将一列与另一列连接起来?
一张表“flight_schedules”有:
Flight | Dep_City | Arr_ City | Dep_Time | Arr_Time
---------------------------------------------------
901 | Chicago | Miami | 0600 | 0900
902 | Miami | Chicago | 0945 | 1300
另一个表“机场”有:
City | Airport_Code
-----------------------
Chicago | KORD
Miami | KMIA
我的查询 atm 是这样的:
SELECT ap.Airport_Code as dep_code, ap.Airport_Code as arr_code, fs.* FROM flight_schedules fs JOIN aiports ap ON (fs.Dep_City=ap.City OR fs.Arr_City=ap.City) ORDER BY flight_number
我知道这给了我每次飞行 2 行这样的:
arr_code | dep_code | Flight | Dep_City | Arr_ City | Dep_Time | Arr_Time
-------------------------------------------------------------------------
KORD | KORD | 901 | Chicago | Miami | 0600 | 0900
KMIA | KMIA | 901 | Chicago | Miami | 0600 | 0900
KMIA | KMIA | 902 | Miami | Chicago | 0945 | 1300
KORD | KORD | 902 | Miami | Chicago | 0945 | 1300
我真正追求的是:
arr_code | dep_code | Flight | Dep_City | Arr_ City | Dep_Time | Arr_Time
-------------------------------------------------------------------------
KORD | KMIA | 901 | Chicago | Miami | 0600 | 0900
KMIA | KORD | 902 | Miami | Chicago | 0945 | 1300
有没有办法调整我的查询来实现这一点,还是我注定要在 flight_schedules 表中包含机场代码(这需要一些脚本)?或者...为 flight_schedules 表中的每个航班(大约 3000 个)点击数据库?虽然我可以这样做,但查询解决方案会更优雅并且使用更少的资源。
提前感谢您的帮助。