2013-02-25 39 views
0

我有兩個列表框,列表框1和列表框2,以及DB,table1和table2中的兩個表。兩個表都包含一個名爲'Color'的列。我想在tablebox1中顯示table1中的所有'Colors',這是我能夠做到的。但是在listbox2中我想顯示Table2中的'Colors',但它不能出現在Table1'Colors'中。那麼如何爲它寫一個查詢呢?查詢顯示從兩個表格否定

這是我一直想和它不工作:

SELECT Table2.Colour 
FROM Table1 CROSS JOIN Table2 
WHERE (Tabel1.Colour! = Table2.colour) 

錯誤消息是 - multi-part identifier Tabel2.Colour could not be found

+0

@布萊恩感謝編輯 – user2107976 2013-02-25 16:46:09

回答

0

這應該與LEFT JOIN工作:

SELECT Table2.Colour 
FROM Table2 
    LEFT JOIN Table1 ON Tabel1.Colour = Table2.colour 
WHERE Table1.Colour IS NULL 

您也可以使用NOT INNOT EXISTS,我只是更喜歡LEFT JOIN/IS NULL語法。

例如:

SELECT Colour 
FROM Table2 
WHERE Colour NOT IN (SELECT Colour FROM Table1) 
+0

非常感謝你對我的工作非常感謝你的建議和幫助 – user2107976 2013-02-25 16:20:57

+0

@ user2107976 - 沒問題,很高興我可以幫忙! – sgeddes 2013-02-25 16:23:39

+1

請將此標記爲答案! – Brian 2013-02-25 16:24:04

0

如果您的RDBMS的版本實現EXCEPT條款, 你可以做到以下幾點:

SELECT Colour FROM Table2 
EXCEPT 
SELECT Colour FROM Table1 

我並不是說這是不是加入更好。只是另一種選擇。

+0

好但我使用SQL Server 2008 – user2107976 2013-02-25 16:41:02

+0

我不是專家,但似乎** ** EXCEPT是支持: 2013-02-25 16:47:38

+0

嘿謝謝,但我怎麼做更多的表..是除了從表1,表2選擇顏色 – user2107976 2013-02-25 16:54:42