我必须选择用户在给定组织中无权访问的项目列表。
我尝试了这个查询
SELECT {Project}.[Number],{Project}.[Name]
FROM {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id]={ProjectParticipant}.[ProjectId]
WHERE {Project}.[Tenant_Id]=@TenantId AND {ProjectParticipant}.[UserId] <> @UserId
GROUP BY {Project}.[Number],
{Project}.[Name]
ORDER BY {Project}.[Number]
但在此列出了给定组织内的所有项目。我遗漏了一些基本的东西。尝试使用左外连接但没有用。帮帮我
答案 0 :(得分:2)
看起来您想要获取Project表中的所有行,而ProjectParticipant表中没有给定用户ID的相应行。
这应该可以解决问题:
SELECT {Project}.[Number],{Project}.[Name]
FROM {Project}
WHERE {Project}.[Tenant_Id]=@TenantId
AND NOT EXISTS (
SELECT * FROM {ProjectParticipant}
WHERE {Project}.[Id]={ProjectParticipant}.[ProjectId]
AND {ProjectParticipant}.[UserId] = @UserId
)
ORDER BY {Project}.[Number]