列-名称,NearestAriport,目的地
表2-航班
列-代码,出发机场,出发时间,到达机场,到达时间
问题-查找从NearestAiport飞往目的地的所有可能方式。
我需要找到所有可能的航班,包括旅行者的直航和中转航班。我可以找到直飞航班,但遇到转机问题。 (最多1站)
如果有人可以帮助我为MS Access DB编写查询,那将真的很有帮助。
答案 0 :(得分:1)
您可以使用下面的选择获取直接/间接航班时刻表。
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进行演示 在演示中,我已经计算了飞行时间
答案 1 :(得分:1)
您可以在下面尝试:
尽管该演示程序位于sqlserver上,但由于它是标准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