2013-06-21 56 views
0

我試圖從兩個表中選擇,並把一些數據從一個到其他用尤斯WHERE (PL/SQL)一個選擇與NULL兩個表,而不是空

我有兩個表像:

table1的

ID NAME COLOR COMPANY_SHORT_NR 
1 a  Green 1 
2 b  Red 23 
3 c  Blue null 
4 a  Green null 
5 g  Green 1 

表2

ID SHORT COMP_NAME 
1 1  company_name_1 
2 23 comapny_name_2 

,現在我想李柯以獲得從表1中的所有數據與公司名稱,如果它的空獲取信息爲null就像

1 a  Green company_name_1 
2 b  Red comapny_name_2 
3 c  Blue null 
4 a  Green null 
5 g  Green company_name_1 

我試圖做這樣的:

select ID 
     ,NAME 
     ,COLOR 
     ,COMPANY_SHORT_NR 
from table1 
    ,table2 
where COMPANY_SHORT_NR = SHORT 

但是這給我的只有不爲空值:

1 a  Green company_name_1 
2 b  Red comapny_name_2 
5 g  Green company_name_1 

如果我使用某事像這樣:

select ID 
     ,NAME 
     ,COLOR 
     ,COMPANY_SHORT_NR 
from table1 
    ,table2 
where COMPANY_SHORT_NR = SHORT or COMPANY_SHORT_NR is null 

我得到thousends的記錄... 如果我只使用IS NULL比它返回我只有2行,因爲它應該是。

我在哪裏犯錯?

回答

1

你neen OUTER JOIN爲

select ID 
     ,NAME 
     ,COLOR 
     ,COMPANY_SHORT_NR 
from table1 
    LEFT OUTER JOIN table2 ON (COMPANY_SHORT_NR = SHORT) 
+0

它適合我。謝謝 –

4

你必須使用left join如下

select ID 
     ,NAME 
     ,COLOR 
     ,COMPANY_SHORT_NR 
from table1 t1 
left join table2 T2 on t1.COMPANY_SHORT_NR = t2.SHORT 
+0

它也適用於我。 Thx –

+0

我很高興我能幫助你。 – Parado

0

豈不是更好地加入了表?像SELECT ID, NAME, COLOR, COMPANY_SHORT_NR FROM table1 t1 LEFT JOIN table2 t2 on t2.SHORT = t1.COMPANY_SHORT_NR WHERE 1