1

我必须选择用户在给定组织中无权访问的项目列表。

我试过这个查询 在此处输入图像描述

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]

但这里它列出了给定组织内的所有项目。我缺少一些基本的东西。也尝试使用左外连接,但没有用。帮帮我

4

1 回答 1

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]
于 2015-06-25T14:25:36.347 回答