2017-09-11 78 views
0

是否有可能在FNO列結果返回給所有的數據,即使在列中的數據爲空?使用系統日期顯示的動態數據 - 的Oracle SQL

目前代碼:

Select a.sNo, a.tCode, a.fno 
from airplane a, Scheduled_Flight s 
Where a.fno = s.fno or SDT >= trunc(sysdate); 

示例輸出從Oracle SQL:

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 
0000002 A320       VA12190 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000004 A330       VA82723 
0000006 A330       VA82123 

我只是想顯示的航班號(FNO)列結果這是原定於今天航班。其他航班,今天不計劃,應在fno列中返回空值,同時仍列出所有航班。任何幫助將非常感謝,因爲我是SQL新手。

編輯: 這是輸出取出WHERE SDT >= TRUNC (SYSDATE); 當我想以顯示所有SNO像下面,但只有SNO 0000003和0000005.的FNO未未原定於今天的其他航班。

SQL> SELECT a.sNo, a.tCode, a.fno 
    2 FROM airplane a LEFT OUTER JOIN Scheduled_Flight s ON a.fno = s.fno; 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 

7 rows selected. 

編輯2:

SELECT a.sNo, a.tCode, a.fno 
    2 FROM airplane a LEFT OUTER JOIN Scheduled_Flight s ON a.fno = s.fno 
    3 AND SDT >= TRUNC (SYSDATE) 
    4 order by a.sno; 

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 
0000004 A330       VA82723 
0000005 A330       VA82722 
0000006 A330       VA82123 
0000007 A330 

EDIT 3: 我想顯示如下。

SNO  TCODE       FNO 
------- ------------------------------ ------- 
0000001 A320 
0000002 A320       
0000003 A330       VA82716 
0000004 A330       
0000005 A330       VA82722 
0000006 A330       
0000007 A330 

編輯4:有了這個我可以通過組SDT和只顯示FNO爲顯示SDT的?

SNO  TCODE       FNO  SDT 
------- ------------------------------ ------- -------------------- 
0000001 A320 
0000002 A320       VA12190 
0000003 A330       VA82716 11/SEP/2017 21:59:00 
0000004 A330       VA82723 
0000005 A330       VA82722 11/SEP/2017 14:00:00 
0000006 A330       VA82123 
0000007 A330 

回答

0

您必須使用LEFT JOIN

SELECT a.sNo, a.tCode,s.fno 
    FROM airplane a LEFT OUTER JOIN Scheduled_Flight s ON a.fno = s.fno 
+0

這僅返回今日航班,而不是未安排其他航班。例如,今天還沒有計劃的航班也需要顯示,這些航班的列中fNo爲空白/空白。 – Dave

+0

所以。這意味着你不需要'SDT> = TRUNC(SYSDATE)'? –

+0

請參閱編輯。 – Dave