У меня есть 3 таблицы, Client, Tool и ClientTools.
Один клиент может иметь несколько инструментов, поэтому ClientTools действует как сводная таблица (содержит только идентификаторы).
Я бы хотел, чтобы для данного Клиента был полный список инструментов и флаг, указывающий, есть ли у Клиента этот инструмент или нет.
Куда я пришел так далеко:
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
Что правильно дает мне все Инструменты, но для всех Клиентов (дублирование строк Инструмента, когда этот Инструмент принадлежит нескольким клиентам).
Но как только я использую метод close рядом с фильтром для выбранного клиента, мой запрос возвращает только строки для этого клиента (поэтому левое соединение больше не выполняется).
Я пытался добавить where c.Id = 123
а также
where (c.Id = 123 or c.Id is null)
но никто не работал.
Чего мне не хватает?
Заранее спасибо!