SQL Server に次のテーブルがあります。
Flights
(flno: 整数、from: 文字列、to: 文字列、距離: 整数、出発: 時間、到着: 時間、価格: 実数)Aircraft
(aid: 整数、aname: 文字列、cruisingrange: 整数)Certified
(eid: 整数、援助: 整数)Employees
(eid: 整数、ename: 文字列、給与: 整数)
このEmployees
関係は、パイロットやその他の種類の従業員も記述していることに注意してください。すべてのパイロットは一部の航空機の認定を受けており、パイロットのみが飛行の認定を受けています。
顧客がマディソンからニューヨークまで、フライトの乗り換えを 2 回以内で移動したいと考えていることを検索するクエリが必要です。顧客が午後 6 時までにニューヨークに到着することを希望する場合、マディソンからの出発時間の選択肢を挙げてください。
ネストされたクエリを使用して簡単な回答が必要です。
マイケル・デュラントの助けを借りて答えてください ヒント :
次の 3 つのケースを考えてみましょう。
- 直行便です。
- 1ストップのフライト。
- 2 つのストップがあるフライト。
ここで、ケースのステップを開始します。
1. 発着するフライトを探します。どこで、いつ到着するかはわかりますよね?
2. この 2 つのフライトについて考えてみましょう。彼らはどこで始まり、どこで終わるのか、2つのフライトに共通するものは何でしょう。各フライトの時間基準は何ですか?
3. 3 つのセグメントと、依存関係を含むそれぞれの特性について考えます。
次に、すべての選択肢が表示される場合、最終的にこれらすべての結合が必要になります。
SELECT F.departs
FROM Flights F
WHERE F.flno IN (( SELECT F0.flno
FROM Flights F0
WHERE F0.from = ‘Madison’ AND F0.to = ‘New York’
AND F0.arrives < ‘18:00’ )
UNION
( SELECT F0.flno
FROM Flights F0, Flights F1
WHERE F0.from = ‘Madison’ AND F0.to <> ‘New York’
AND F0.to = F1.from AND F1.to = ‘New York’
AND F1.departs > F0.arrives
AND F1.arrives < ‘18:00’ )
UNION
( SELECT F0.flno
FROM Flights F0, Flights F1, Flights F2
WHERE F0.from = ‘Madison’
AND F0.to = F1.from
AND F1.to = F2.from
AND F2.to = ‘New York’
AND F0.to <> ‘New York’
AND F1.to <> ‘New York’
AND F1.departs > F0.arrives
AND F2.departs > F1.arrives
AND F2.arrives < ‘18:00’ ))