【问题标题】:Get two tables from same table SQL从同一张表SQL中获取两张表
【发布时间】:2020-05-10 14:09:05
【问题描述】:

我有两张桌子

城市

id  name
------------
1   Helsinki
2   Tukholma
3   Oslo
4   Turku

航班

id  where_id    to_id
---------------------
1   1           2
2   1           3
3   2           3
4   2           4

我想得到这个结果

Helsinki    Tukholma
Helsinki    Oslo
Tukholma    Oslo
Tukholma    Turku

如何编写查询?结果有两个名称列,我无法绕过它?

【问题讨论】:

  • 加入城市两次。顺便说一句,from_id 不是比 where_id 更好的列名吗?
  • From 会更好。我正在考虑去哪里拆分它...谢谢。

标签: sql database join select


【解决方案1】:

您可以加入两次:

select c1.name where_city, c2.name to_city
from flights f
inner join cities c1 on c1.id = f.where_id
inner join cities c2 on c2.id = f.to_id

【讨论】:

    【解决方案2】:

    你需要两个连接:

    select f.*, cw.name, ct.name
    from flights f join
         cities cw
         on f.where_id = cw.id join
         cities ct
         on f.to_id = ct.id;
    

    【讨论】:

    • f.*,需要删除。谢谢。
    • @Lasse 。 . .所以删除它。
    【解决方案3】:

    我找到了这个解决方案。很清楚。没有联接

    SELECT A.name, B.name FROM cities A, cities B, flights F WHERE F.where_id=A.id AND L.to_id=B.id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-29
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      相关资源
      最近更新 更多