如何在与MySQL相同的列上使用左连接两次?

gar*_*uan 3 mysql left-join

我有两张桌子,一张用于机场,一张用于路线.

机场看起来有点像这样

Airports
-------------------------------------
id | code | name                    |
-------------------------------------
01 | LGW  | London Gatwick          |
-------------------------------------
02 | LHR  | London Gatwick          |
Run Code Online (Sandbox Code Playgroud)

等等....

和另一个像这样的路线

Routes
---------------------------
id | ORIGIN | DESTINATION |
---------------------------
01 | LGW    | VCE         |
---------------------------
02 | TSF    | LHR         |
Run Code Online (Sandbox Code Playgroud)

等等...

我需要从表中选择路线,但我也想获得机场名称.令人困惑的是,我需要两次查询机场代码.我正在尝试这样的事情

SELECT routes.*, airports.name as origin_name FROM routes
LEFT JOIN airports ON airports.IATA = routes.origin
LEFT JOIN airports ON airports.IATA = routes.destination
WHERE origin = 'LHR' AND destination = 'VCE' OR origin = 'VCE'
Run Code Online (Sandbox Code Playgroud)

您可能知道或不知道哪些不起作用.我该怎么做呢?

Bli*_*ixt 16

使用别名:

SELECT
    routes.*,
    a1.name AS origin_name,
    a2.name AS destination_name
FROM routes r
LEFT JOIN airports a1 ON a1.IATA = r.origin
LEFT JOIN airports a2 ON a1.IATA = r.destination
WHERE
    r.origin = 'LHR' AND r.destination = 'VCE' OR r.origin = 'VCE'
Run Code Online (Sandbox Code Playgroud)