私は3つのテーブル、クライアント、ツールとClientToolsを持っています。 1つのクライアントは複数のツールを持つことができるため、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 c.Id = 123
と where (c.Id = 123 or c.Id is null)
を追加しようとしましたが、機能しませんでした。
私には何が欠けていますか?
ありがとうございます!クエリで
WHERE句を投稿できますか? –
完了。 (ああ、最小文字数の制限を歓迎します!) – Shimrod