如何连接两个表以查找转机航班?
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
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
列 - 姓名、最近的机场、目的地
表 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
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