2014-11-21 77 views
0

我有以下任務:SQL創建視圖連接航班

我需要創建一個視圖,顯示第1次航班和他的連接航班。

在這個例子中FlightNo 1 & 2.

-

我的飛行表:

FlightNo---Date--------StartTime---ArrivingTime---StartPort---DestinationPort 

1. ----2014-11-20---01:00:55-----02:00:34----------a----------------b 
2. ----2014-11-20---02:10:55-----03:00:34----------b----------------c 
3. ----2014-11-20---20:00:55-----21:00:34----------x----------------q 
4. ----2014-11-20---00:00:55-----01:00:34----------a----------------u 

...

到目前爲止我的代碼:

create OR REPLACE view FlightConnection as 

select* FROM Flight a 

where exists (select* FROM Flight b 
where a.StartPort = b.DestinationPort and 
a.ArrivingTime < b.StartTimet); 

我的輸出:

FlightNo---Date--------StartTime---ArrivingTime---StartPort---DestinationPort 

---1 ----2014-11-20---01:00:55-----02:00:34----------a----------------b 

-

但我需要FlightNo 1和2 我嘗試了幾種不同的事情,但我想我暫時啞。

請幫忙。 (對不起,我的英語)

+0

所以,你要對航班,使得第一的目的端口是第二的起始端口,和第一的到達時間是第二次的起飛時間前? – 2014-11-21 18:32:27

回答

0

您需要執行(自)JOIN以獲取包含有關可能連接的兩個航班的數據的結果行。這應該讓你開始:

CREATE OR REPLACE VIEW FlightConnection AS 
    SELECT * 
    FROM Flight a 
    JOIN Flight b 
     ON a.DestinationPort = b.StartPort 
     AND a.Date = b.Date 
     AND a.ArrivingTime < b.StartTime 
+0

您可能想要選擇特定列併爲其分配別名,而不是隻選擇'*'。 – 2014-11-21 18:39:52

+0

是的,somthing現在不能正常工作mysql正在爲錯誤而哭泣1060重複的列名FlightNo – 2014-11-21 18:58:30

+0

選擇選擇列表中的特定列併爲其分配不同的別名,或者在'AS'之前放置適當的列列表。或兩者。 – 2014-11-21 19:06:57