2016-03-23 50 views
0

我有兩個如下所示的表。以下查詢僅返回兩列中具有匹配業務標識的建築物。但是我需要返回下面查詢中的Where子句中包含的所有building_ID。如果Business_Id不存在於Business表中,那麼我仍然需要該查詢來返回Building_Ids,這些Business_Id不在Business表中,並且對於Business。[BusinessName]列有類似「不存在」的內容。顯示所有建築ID在Where子句中連接兩個表,其中一個表沒有Building_ID列

建表

enter image description here

Select odb.Building.[Building_pk], odb.Business.[Business_pk], Business.[BusinessName] 
From odb.Building bld 
Left Join odb.Business bus 
On bld.[Business_fk] = bus.[Business_pk] 
Where bld.[Building_pk] 
IN 
(
1,2,3,4,5,6,7,8,9,10 
) Order By bld.[Building_pk] Desc 

我需要有這樣的結果集返回:enter image description here

回答

0

假設WHERE子句中的列表中有有效的建築,那麼你只需要一個LEFT JOIN代替內連接:

Select bld.Business_fk, odb.Business.[Business_pk], 
     Business.[BusinessName] 
From odb.Building bld Left Join 
    odb.Business bus 
    On bld.[Business_fk] = bus.[Business_pk] 
Where bld.[Building_pk] IN (1,2,3,4,5,6,7,8,9,10) 
Order By bld.Business_fk Desc; 
+0

對不起,我錯過了左連接。剛剛更新了查詢。但請再看一次任務,並看到它沒有解決任何問題。結果集只會返回從1到6的建築鍵,並且將跳過7,8,9和10. – enigma6205

+0

@ enigma6205。 。 。 「SELECT」和「GROUP BY」(和「ORDER BY」)列應該來自「bld」表,而不是「bus」表。 –

相關問題