2014-09-26 53 views
0

問題是在左外連接,當在右側表中沒有的行然後它不顯示null值,它會顯示以前的值....oracle的左外聯接未示出空值,但顯示相同的值

喜歡這張....

1次表包含

PGMTX_CODE PGMTX_MARKS PGMTX_TOTQSTN 
------------------------------------------- 
EE   1    5 

EE   2    5 

EE   3    0 

EE   4    0 

第二表包含

PGMTX_CODE PGMTX_MARKS PGMTX_ACTUSEDQST 
------------------------------------------- 
EE   1    5 

所以,我想造成像...

PGMTX_MARKS PGMTX_TOTQSTN  PGMTX_ACTUSEDQST 
-------------------------------------------------- 
1    5     5 

2    5     blank 

3    0     blank 

4    0     blank 

我用這樣的查詢...

SELECT m.PGMTX_MARKS, 
     m.PGMTX_TOTQSTN, 
     tlm.PGMTX_ACTUSEDQST, 
    from PAPERGEN_MTL_OEX m 
     left OUTER JOIN PAPERGEN_TLMTL_OEX tlm 
     ON m.PGMTX_CODE=tlm.PGMTX_CODE 
where m.PGMTX_CODE='EE' 
order by m.PGMTX_MARKS  

但我得到了類似結果

PGMTX_MARKS PGMTX_TOTQSTN  PGMTX_ACTUSEDQST 
-------------------------------------------------- 
1    5     5 

2    5     5 

3    0     5 

4    0     5  

回答

3

您的加盟條件是錯誤的,應該是

ON m.PGMTX_CODE=tlm.PGMTX_CODE AND m.PGMTX_MARKS = tlm.PGMTX_MARKS 
+0

當我給條件標記你說,那麼它只返回一行。 但我想從左表只匹配所有行PGMTX_CODE – mukul 2014-09-26 07:54:58

+0

那麼,[它的作品](http://sqlfiddle.com/#!4/a925a1/15/0)對我來說... – yamny 2014-09-26 07:59:27

+0

我只能添加在某些情況下,我們需要考慮簡單。這個問題就像:我們有新的外國學生,我們必須讓他上課。我們不能只將他分配給給定的學期,但我們還需要將他分配給特定的專業。 – yamny 2014-09-26 08:01:54