2011-01-24 44 views
2

這可能很簡單,但我發現這很難包圍我的頭。SQL不包括通過加入

基本上,我有2個表,a和b。 'b'包含所有可能項目的列表,'a'包含一個鏈接到'b'中的項目的行,還有一個父母號碼。即顯示在他們的信息的行我做這樣的事情:

select a.field1, a.field2, b.description 
from a inner join b on a.itemid = b.itemid 
where a.parentnumber = @parentnumber 

這種事情工作sfine。但我也想要一個下拉框來顯示而不是列出的所有項目。我將如何做到這一點?

+0

它應該只返回那些沒有列出的? –

+0

是的,只有那些不在該父母號碼中的人。 – Chris

回答

9
SELECT * 
FROM b 
WHERE itemid NOT IN 
     (
     SELECT itemid 
     FROM a 
     WHERE a.parentnumber = @parentnumber 
     ) 
+0

太棒了,謝謝! – Chris

1

通過對此子查詢使用左連接,可以給出別名並使用此別名執行空檢查。我更喜歡這種方法,因爲可以在整個查詢中使用包含子查詢結果的別名。

SELECT * 
FROM b 

LEFT JOIN 
(
SELECT itemid 
FROM a 
Where a.parentnumber = @parentnumber 
) As Sub On b.itemid = sub.itemid 

WHERE sub.itemid IS NULL