微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

伦敦说,我正在尝试编写一个查询,以确定我不能直接从一个城市飞往哪些城市.鉴于架构:

城市:

| 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以获得独特的城市名称,我们就完成了.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐