试图找到所有没有从城市直飞的城市(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 本来可以做到这一点,但事实并非如此.有帮助吗? 解决方法
意思是人们可以飞到那里,而不是直接从伦敦飞来.所以通过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以获得独特的城市名称,我们就完成了. 对这个问题的更复杂的解释是:“你可以从伦敦飞往的城市,而不是直接”但由于这看起来像基本的作业,我不认为他们期望你的递归查询. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |