如何连接两个表以查找转机航班?

How to JOIN two tables to find connecting flights?

表 1 - 旅行者

列 - 姓名、最近的机场、目的地

表 2 - 航班

列 - 代码、DepartureAirport、DepTime、ArrivalAirport、ArrTime

问题 - 找到从 NearestAiport 飞往目的地的所有可能方式。

我需要为旅行者找到所有可能的航班,包括直飞航班和转机航班。我能够找到直飞航班,但在寻找转机航班时遇到问题。 (最多 1 站)

如果有人可以帮助我编写 MS Access DB 查询,那将非常有帮助。

您可以使用以下 select 获取 Direct/Indirect 航班时刻表。

 SELECT t.Name,t.NearestAirport,cn.DepartureAirport AS Stop,t.DestinationAirport
 FROM Flights f 
 JOIN Travelers t ON t.NearestAirport=f.DepartureAirport
 LEFT JOIN Flights cn ON cn.DepartureAirport=f.ArrivalAirport AND cn.ArrivalAirport = t.DestinationAirport 

点击https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=2968f474760b93f25201e2cd00ccc9d6进行演示 在演示中我计算了飞行时间

您可以尝试以下操作:

虽然演示在 sql 服务器上,但它是标准的 sql 我认为它也适用于 MS Access

DEMO

  select 
       X.name,
       x.nearestairport,
       case when X.destinationaiport=X.arrivaleairport then ''
       else X.arrivaleairport end as stop1,
      X.destinationaiport 
   from
    (
       select name, a.nearestairport, a.destinationaiport,b.arrivaleairport
       from table1 a left join table2 b
       on a.nearestairport=b.departureairport
    )X
    left join table2 c 
    on X.destinationaiport=c.arrivaleairport and X.nearestairport=c.departureairport

输出:

name    nearestairport  stop1   destinationaiport
Jason   JFK                     CLT
Jason   JFK              RDU    CLT
Robert  LAG                     RDU
Wel     CAK              JFK    CLT
Adam    RDU              CLT    JFK
Adam    RDU                     JFK