mysql - MySQL告诉如果没有火车旅行路线返回从到达站开始
问题描述
查找作为通往另一个车站的路线起点的车站,但不是来自其他车站的任何路线的目的地。
尝试打印日本的火车站名称,这些名称是通往另一个车站的路线的起点,没有重复并按字母顺序排列,但不是从该其他火车站出发的任何路线的目的地。因此,如果路由 1->2 存在而 3->1 不存在,则无论 1 上是否存在往返(例如 1->2 和 2->1),1 仍被视为结果的一部分。
数据库设置为:
TABLE = Stations
id|name_station |country|manager_name|time_zone |number_of_employees
1 | Tokyo Grand | Japan | Satoshi | Japan Time| 500
2 | Nagasaki |Japan | Hirohito | Japan Time| 345
3 | Tokyo suburb|Japan | Kiki. | Japan Time| 344
TABLE = train_routes
start_station_id| end_station_id | date_of_last_trip
1 | 3 | 07.20.2020
1 | 2 | 07.21.2020
2 | 1 | 07.21.2020
根据此表,我们将 Tokyo Grand 包含在最终结果中,因为它有一条到东京郊区的路线,但没有从东京郊区返回东京盛大的路线作为路线。Tokyo Grand 和长崎之间的往返行程并没有阻止 Tokyo Grand 被列为起点,没有回程。
所以最终结果是只返回遵循此条件并按字母顺序组织的站点的唯一站点名称。根据这些数据,似乎 station.id、train_routes.start_station_id、routes.end_station_id 和stations.country 是与此问题相关的唯一项目。经理姓名、时区、员工人数和上次旅行的日期无关紧要。
因此,该过程似乎是根据从日本国家车站过滤掉的 id 来查看是否不存在从旅行到车站的回程。如果从已到达的站点没有回程,则添加起始站点。然后添加将 id 替换为站点名称。
解决方案
我认为应该这样做:
select distinct
s1.name_station
from
train_routes r1
inner join
Stations s1
on
r1.start_station_id = s1.id
left outer join
train_routes r2
on
r1.start_station_id = r2.end_station_id
and r1.end_station_id = r2.start_station_id
where
r2.end_station_id is null
and s1.country = 'Japan'
order by
s1.name_station
推荐阅读
- php - 如果关联数组中存在多个特定键值对
- sockets - 通过套接字 C 在以太网接口中注入任何帧
- python - 如何在python中查找2个日志数据并在tkinter treeview中添加时间差
- java - 创建泛型类成员的实例:Class
.newInstance() 抛出异常 - laravel-8 - Laravel8 中的错误:SQLSTATE [42S02]:未找到基表或视图:1146 表
- twitter-bootstrap - 移动设备中 chrome 浏览器中动画后的内容跳转
- graphql - 如何使用 ExpediaGroup 的 graphql-kotlin 上传?
- javascript - c#asp.net javascript函数不起作用
- fortran - ifort:关于 -fallow-argument-mismatch 的命令行警告
- spacy - 在 spaCy v3 中使用基本模型训练自定义 NER 组件