2017-11-21 1 views
0

SQLでデータを取得する際に問題が発生します。 1つのテーブルソースまたはプライマリキーを持つが、2つの異なる外部キーを持つ方法。SQLは正確なデータを取得できません

This is the ERD This is the result but when i put the Departure it will be vice versa

+0

あなたが何を求めているかは完全には分かりません。あなたの質問を編集して、画面のキャプチャからクエリと一緒にサンプル入力、出力を表示してください。 –

+0

質問/改善方法の詳細については、このリンク(https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)をご確認ください。あなたの質問 – TheGameiswar

+0

好きなだけ多くのジョインをクエリに含めることができます。 3つのテーブルのデータが必要な場合は、少なくとも2つの結合が必要です。ジョインに関する適切な調査を行い、それでもヘルプが必要な場合は、問題の完全かつ明確な説明を提供してください。 – jmcilhinney

答えて

0

2回使用されるテーブルにテーブルエイリアス名を使用し、2回使用する必要があります。

SELECT Routes.ID, DEP.IATACode, ARR.IATACode 
FROM dbo.Routes 
INNER JOIN dbo.Airports AS DEP ON DEP.ID = Routes.DepartureAirportID 
INNER JOIN dbo.Airports AS ARR ON ARR.ID = Routes.ArrivalAirportID 

一度定​​義したクエリでは、エイリアスはどこでも使用できます。ここでhere for more on using an alias

+0

スケジュール表にそれを適用してくれてありがとう、ありがとう!メリークリスマス –

1

私が正しくあなたの問題を理解していた場合、あなたが参加し、同じから「出発」と「到着」の両方の値を取得しようとしているようです。これを有効にするには、「出発」と「到着」のそれぞれについて、ルートから空港への2つの別々の結合を必要とします(それに応じて別名を付けます)。 「空港」の2つのインスタンスはあなたが選択した投影に必要なものを行うことができますので、それに応じてエイリアスする必要性を必要と合流すること

select date, 
    time, 
    ArrivalAirport.IATACode as Departure, 
    DepartureAirport.IATACode as Arrival, 
    FlightNumber, 
    Aircrafts.Name, 
    EconomyPrice, 
    Schedules.ID 
from Schedules 
inner join [Routes] on Schedules.RouteID = [Routes].ID 
inner join Aircrafts on Schedules.AircraftID = Aircrafts.ID 
inner join Airports as ArrivalAirport on ArrivalAirport.ID = [Routes].ArrivalAirportID 
inner join Airports as DepartureAirport on DepartureAirport.ID = [Routes].DepartureAirportID 

注意。

+0

をクリックしてください。すべての列の参照には、テーブル名またはテーブルエイリアス(エイリアスが定義されている場合)があります。 –

+0

@ PEBKAC「マルチパート識別子 'Airports.ID' "見つかった" –

+0

@Christian Lumugdan ...修正された結合。もう一回やってみよう。 – PEBKAC

0

を参照してください、私はあなたが探していると思うものです:

SELECT 
    Schedules.Date, 
    Schedules.Time, 
    DepartureAirport.IATACode AS Departure, 
    ArrivalAirport.IATACode AS Arrival, 
    Schedules.FlightNumber, 
    Aircrafts.Name, 
    Schedules.EconomyPrice, 
    Schedules.ID 
FROM 
    Schedules 
    INNER JOIN Aircrafts ON Schedules.AircraftID = Aircrafts.ID 
    INNER JOIN Routes ON Schedules.RouteID = Routes.ID 
    INNER JOIN Airports AS DepartureAirport 
      ON Routes.DepartureAirportID = DepartureAirport.ID 
    INNER JOIN Airports AS ArrivalAirport 
      ON Routes.ArrivalAirportID = DepartureAirport.ID 

事は2を使用すると、2つの異なる空港を持つことができますので、空港のテーブルに参加し分離することです。さもなければ、非常に短い飛行と非常に不満を感じる乗客があります。

+0

私はこれを試します –

+0

データの結果はありません。 –

+0

データの検索結果はありません。 –

関連する問題