我有3個表,Client,Tool和ClientTools。 一個客戶端可以有多個工具,因此ClientTools充當數據透視表(僅包含Id的)。3個表的外部聯接
我想要做的是,對於一個給定的客戶,有一個完整的工具列表,以及一個標誌,指示客戶是否有這個工具。
哪裏來的如此之遠是:
select t.Id as [ToolId],
t.Name as [ToolName],
Cast(case when c.Id is NULL then 0 else 1 end as bit) as [HasThisTool],
from Tool t
Left join ClientTools ct
on t.Id = ct.ToolId
Left Join Client c
on ct.ClientId = c.Id
哪個正確地給了我所有的工具,但對於所有的客戶端(複製工具列當多個客戶端擁有這個工具)。
但是,只要我使用where close來過濾到選定的客戶端,我的查詢只返回這個客戶端的行(所以不再進行左連接)。
我試過添加where c.Id = 123
和 where (c.Id = 123 or c.Id is null)
但沒有工作。
我錯過了什麼?
在此先感謝!
你可以發佈你的WHERE子句嗎? – 2012-03-07 12:41:49
完成。 (哦,歡迎最低字符數限制!) – Shimrod 2012-03-07 12:45:46