You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询优化需求:获取乘客航班的出发与到达城市

SQL语句优化与表关联解释

修改后的SQL代码

SELECT 
    f.departure_airport,
    f.arrival_airport,
    a_dep.city AS city_departure,
    a_arr.city AS city_arrival
FROM flights f
JOIN ticket_flights tf ON f.flight_id = tf.flight_id
JOIN tickets t ON tf.ticket_no = t.ticket_no
JOIN airports a_dep ON f.departure_airport = a_dep.airport_code
JOIN airports a_arr ON f.arrival_airport = a_arr.airport_code

优化说明

原SQL用OR关联airports表,会导致每条航班记录匹配两次:一次对应出发机场的城市,一次对应到达机场的城市,不仅结果重复,还没法区分城市是出发地还是目的地。

改为两次关联airports表,分别给表起别名a_dep(对应出发机场)和a_arr(对应到达机场),通过明确的关联条件分别拉取两个城市字段,就能得到你需要的四列清晰结果。

Airports与Flights表的关联关系

  • flights表的departure_airport和arrival_airport字段存储的是机场代码,和airports表的主键airport_code一一对应。
  • 这是多对一的关联:多个航班可以从同一个机场起飞,也可以降落至同一个机场;每个机场对应唯一的城市信息。
  • 要获取航班的出发/到达城市,必须通过机场代码作为关联键,把flights和airports表关联起来,才能从airports表中拿到对应的城市数据。

内容的提问来源于stack exchange,提问作者hokerby27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:50:28