0

1 つの行から大部分のデータを選択し、1 つの列を別の列に結合するクエリを作成するにはどうすればよいですか?

1 つのテーブル "flight_schedules" には次のものがあります。

Flight | Dep_City | Arr_ City | Dep_Time | Arr_Time
---------------------------------------------------
901    | Chicago  | Miami     | 0600     | 0900
902    | Miami    | Chicago   | 0945     | 1300

別のテーブル「空港」には次のものがあります。

City     | Airport_Code
-----------------------
Chicago  | KORD
Miami    | KMIA

私のクエリatmは次のようなものです:

SELECT ap.Airport_Code as dep_code, ap.Airport_Code as arr_code, fs.* FROM flight_schedules fs JOIN aiports ap ON (fs.Dep_City=ap.City OR fs.Arr_City=ap.City) ORDER BY flight_number

これにより、次のようにフライトごとに2行が得られることがわかっています。

arr_code | dep_code | Flight | Dep_City | Arr_ City | Dep_Time | Arr_Time
-------------------------------------------------------------------------
KORD     | KORD     | 901    | Chicago  | Miami     | 0600     | 0900
KMIA     | KMIA     | 901    | Chicago  | Miami     | 0600     | 0900
KMIA     | KMIA     | 902    | Miami    | Chicago   | 0945     | 1300
KORD     | KORD     | 902    | Miami    | Chicago   | 0945     | 1300

私が本当に求めているのはこれです:

arr_code | dep_code | Flight | Dep_City | Arr_ City | Dep_Time | Arr_Time
-------------------------------------------------------------------------
KORD     | KMIA     | 901    | Chicago  | Miami     | 0600     | 0900
KMIA     | KORD     | 902    | Miami    | Chicago   | 0945     | 1300

これを達成するためにクエリを調整する方法はありますか、それとも、flight_schedules テーブルに空港コードを含める運命にありますか (これにはスクリプトが必要になります)。または...flight_schedules テーブル (約 3000) 内のすべてのフライトに対してデータベースをヒットしますか? これはできますが、クエリ ソリューションはよりエレガントで、リソースの使用量が少なくなります。

助けてくれてありがとう。

4

2 に答える 2