2013-05-07 15 views
0

我想篩選查詢的結果,我不能完全得到我正在尋找的行爲。什麼加入將完成我的目標? (在SQL中篩選)

我有一個表項有主鍵ID。

有幾個屬性可能存在,這是「可能」,導致我的問題。如果該屬性得到滿足或者該屬性不存在,我希望該項目包含在結果中。

對於必須存在的屬性,我使用INNER JOIN來得到我想要的。

對於那些可能存在我得到的結果,其中屬性滿足,但不是空的地方。

例如

SELECT id, name 
FROM item 
INNER JOIN itemWhereTable ON 
(item.id = itemWhereTable.itemID AND itemWhereTable.locationID = 13) 
INNER JOIN itemColorTable ON 
(item.ID = itemColorTable.itemID AND itemColorTable.ColorID = 2) 
WHERE 
item.minCost <=50 

我也想看看那裏的ColorId未設置結果(即一些包裝是通用的,只有特定的人進行跟蹤),即在第二INNER JOIN返回一個空結果。我試過LEFT JOIN,但它似乎不是我所需要的。任何人都可以將我指向正確的方向嗎?

+0

u能做到'和itemColorTable.ColorID IS NULL'? – dave 2013-05-07 22:18:26

+0

@dave會這樣產生嗎,因爲連接產生了一個臨時行,其中有物品ID但沒有任何可匹配的地方? – Stephen 2013-05-07 22:19:26

+0

只要它有一個ItemID和ColorID沒有設置,它會顯示ID和名稱 – dave 2013-05-07 22:22:02

回答

1

你可以這樣做:

AND itemColorTable.ColorID IS NULL 

或者AND itemColorTable.ColorID = 2 OR itemColorTable.ColorID IS NULL