3 개의 테이블, 클라이언트, 도구 및 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 c.Id = 123
및 where (c.Id = 123 or c.Id is null)
을 추가했지만 아무 것도 시도하지 않았습니다.
무엇이 누락 되었습니까?
미리 감사드립니다.
WHERE 절을 게시 할 수 있습니까? –
완료. (오, 최소 글자 수 제한을 환영합니다!) – Shimrod