加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

试图找到所有没有从城市直飞的城市(PostgreSQL)

发布时间:2020-12-13 15:52:23 所属栏目:百科 来源:网络整理
导读:伦敦说,我正在尝试编写一个查询,以确定我不能直接从一个城市飞往哪些城市.鉴于架构: 城市: | c_id | city_name | 航班: | f_id | departure_city_id | destination_city_id | 目前我的查询返回相反的,即它返回从伦敦有直飞航班的城市 SELECT c2.city_name
伦敦说,我正在尝试编写一个查询,以确定我不能直接从一个城市飞往哪些城市.鉴于架构:

城市:

| c_id |   city_name    |

航班:

| f_id | departure_city_id | destination_city_id |

目前我的查询返回相反的,即它返回从伦敦有直飞航班的城市

SELECT c2.city_name as "City"
FROM flights AS f
JOIN cities AS c2 ON f.destination_city_id != c2.c_id
JOIN cities AS c ON c.c_id = c.c_id
WHERE c.city_name = 'London'
AND c.c_id != c2.c_id
AND f.departure_city_id = c.c_id;

我原以为要改变它以获得我想要的东西会很容易.
我想改变第三行

JOIN cities AS c2 ON f.destination_city_id = c2.c_id

本来可以做到这一点,但事实并非如此.有帮助吗?

解决方法

cities I can’t fly to directly from a city,say London.

意思是人们可以飞到那里,而不是直接从伦敦飞来.所以通过destination_city_id加入(不是LEFT JOIN)城市到航班:

SELECT DISTINCT c.city_name
FROM   cities c
JOIN   flights f ON f.destination_city_id = c.c_id
JOIN   cities c2 ON c2.c_id = f.departure_city_id
WHERE  c2.city_name <> 'London';

然后我只需要排除来自伦敦的航班,申请DISTINCT以获得独特的城市名称,我们就完成了.

对这个问题的更复杂的解释是:“你可以从伦敦飞往的城市,而不是直接”但由于这看起来像基本的作业,我不认为他们期望你的递归查询.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读