0

私のスキーマは次のとおりです。

  • airportsテーブルには空港名が含まれています。主キーは整数ですid
  • flightsテーブルにはフライトデータが保持されます。2つの外部キーがdeparture_airport_idあり、arrival_airport_id

飛行機の出発空港と到着空港の両方の名前を取得しようとしています。現在、私のSQLは次のとおりです。

SELECT name AS departure_airport, name AS arrival_airport FROM flights, airports WHERE departure_airport_id = airports.id OR arrival_airport_id = airports.id

データベースは、私が「arrival_airport_id」の名前を意味し、「arrival_airport_id」の名前をdeparture_airport意味することをデータベースが認識できないため、これがどのようにあいまいであるかがわかりますが、フライトレコードで両方の空港の名前を取得する正しい方法は何ですか?departure_airport_idarrival_airport

4

3 に答える 3

2

次のように、フライトから空港のテーブルに2回参加します。

SELECT dep.name AS departure_airport, arr.name AS arrival_airport 
FROM flights f
    JOIN airports dep ON f.departure_airport_id = dep.id 
    JOIN airports arr ON f.arrival_airport_id = arr.id
于 2012-04-04T10:31:43.107 に答える
1
    SELECT departure_airport.name AS departure_airport, 
           arrival_airport.name AS arrival_airport 
      FROM flights
INNER JOIN airports departure_airport
        ON departure_airport.id = flights.departure_airport_id
INNER JOIN airports arrival_airport
        ON arrival_airport.id = flights.arrival_airport_id

別のエイリアスを使用する場合は、テーブルに複数回参加しても問題ありません。

于 2012-04-04T10:34:09.607 に答える
1
SELECT depart.name AS departure_airport, arr.name AS arrival_airport 
FROM flights, airports arr,airports depart 
WHERE departure_airport_id = depart.id and
arrival_airport_id = arr.id
于 2012-04-04T10:34:25.847 に答える