【问题标题】:MySQL Tell if No Train Trips Route Back to Start From Arrived StationMySQL告诉如果没有火车旅行路线回到从到达站开始
【发布时间】:2020-09-17 04:31:13
【问题描述】:

查找作为通往另一个车站的路线起点的车站,但不是从其他车站出发的任何路线的目的地。

尝试打印日本火车站的名称,这些火车站名称是通往另一个车站的路线的起点,没有重复并按字母顺序排列,但不是从该其他火车站出发的任何路线的目的地。因此,如果路由 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 替换为站点名称。

【问题讨论】:

  • 我发现这个要求很难理解。为了更清楚,我建议以下内容。 1) 为我们提供一个样本 train_routes 表,其中可能包含 10 行数据。 2) 告诉我们应该出现在结果中的站的站号,并解释为什么应该出现。 3) 告诉我们不应该出现在结果中的电台的电台 ID,并解释为什么不应该出现。
  • 更新了表格并给出了示例和解释

标签: mysql sql


【解决方案1】:

我认为应该这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2020-05-06
    • 2017-05-17
    • 2021-10-26
    相关资源
    最近更新 更多