使用联接替换 table 列

Substituting table columns using Joins

我不确定标题是否足够清楚。我想要的东西很简单,但实现起来却很复杂(也许我想多了)。我认为联接有解决方案,尽管我不知道如何构造联接。

假设我们有两个表,cities 和 flight_profiles:

城市

城市名称 |城市代码
--------------+------------
城市 a | 1
城市 b | 2

flight_profiles

flight_numb |来自 |至
--------------+--------+-----
701 | 1 | 2
702 | 2 | 1

并且查询应该显示以下所需的输出

期望的输出

flight_numb |来自 |至
--------------+------------+--------
701 |城市 a |城市 b
702 |城市 b |城市a

如何构造此连接?

flight_profilestable已有路线,您只需将城市代码替换为名称即可。正如您所建议的那样,这可以通过使用连接来完成 - 对于您要替换的每个代码一次:

SELECT flight_numb, cityfrom.name, cityto.name
FROM   flight_profiles fp
JOIN   cities cityfrom ON fp.from =  cityfrom.citycode
JOIN   cities cityto ON fp.to =  cityto.citycode

您需要使用不同的别名两次加入cities table

select f.flight_numb, 
       c_from.city_name as c_from, 
       c_to.city_name as c_to
from flight_profiles f
join cities c_from on c_from.city_code = f.from
join cities c_to on c_to.city_code = f.to