2012-04-04 4 views
0

私のスキーマは次のとおりです。同じタイプの2つのデータベース列の関連する名前を取得します

  • airportsテーブルは、空港名を保持しています。主キーは整数で、idです。
  • flightsテーブルは飛行データを保持します。それは私が飛行機にdeparture-と到着空港の両方の名前を取得しようとしています2つの外部キー、departure_airport_idarrival_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 

私は、データベースがdeparture_airportで、私はdeparture_airport_idの名前を意味することを知ることができないので、これは曖昧であるかを確認することができますし、arrival_airportで、私は「arrival_airport_id」の名前を意味し、飛行記録上の両方の空港の名前を取得する正しい方法は何ですか?

答えて

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 
+0

優れています。ありがとう! – Laurens

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 

が複数回表に入社全く問題ありません。

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 
関連する問題