2015-10-13 62 views
1

我有兩個表右加入不會從右側表

表1返回所有的記錄:assetdetail:itm_id,itm_slno,itm_desc ..

表2:itmtype:typ_id,typname ,..

表2包含6個不同的類型名稱。

但是,當我使用正確的連接它只返回4條記錄。

enter image description here

我的查詢是:

SELECT a.itm_id,i.typname,a.itm_slno,a.itm_desc,a.itm_class from assetdetail 
a right join itmtype i on i.typ_id=a.typ_id where a.itm_id!='234' 
and itm_class='XYZ' group by i.typname 

我需要把所有的加盟query.What是錯我的查詢類型名6點的記錄?

回答

4

right join,在第一表條件需要進入on條款,而不是where條款:

SELECT a.itm_id, i.typname, a.itm_slno, a.itm_desc, a.itm_class 
from assetdetail a right join 
    itmtype i 
    on i.typ_id = a.typ_id and a.itm_id <> '234' and a.itm_class = 'XYZ' 
group by i.typname; 

在第一個表不匹配行有NULL值,失敗在where比較。但是,我會將其寫爲left join。大多數人發現邏輯更容易遵循:保持第一個表中的所有行,不管是否匹配:

SELECT a.itm_id, i.typname, a.itm_slno, a.itm_desc, a.itm_class 
from itmtype i left join 
    assetdetail a 
    on i.typ_id = a.typ_id and a.itm_id <> '234' and a.itm_class = 'XYZ' 
group by i.typname; 

條件保持不變。

+0

謝謝你的回答。但是你的查詢返回itmtype的所有typname。條件(a.itm_class ='XYZ')不起作用。我不知道爲什麼 – ManiMuthuPandi

+0

是的。在實踐中,右連接是罕見的罕見 – Strawberry

+0

@戈登Linoff我需要得到只有6個記錄沒有NULL values.IS有可能嗎? – ManiMuthuPandi