【发布时间】:2017-01-24 21:52:25
【问题描述】:
我有 3 张桌子 -
User UserID PK
SecurityGroup SecurityGroupID PK, SecurityGroupName
UserSecurityGroup UserSecurityGroupID, UserID FK, SecurityGroupID FK
我正在尝试选择用户不属于的安全组的名称。
一个用户可以是多个组的成员。
即我有三个安全组:Admin、Moderator、Member
我通过一个用户 ID。所述用户被分配到 Admin 和 Moderator 组,但不属于 Member 组。我正在尝试显示“会员”。
这些是我目前的尝试:
尝试 1 -
select tblSecurityGroup.SecurityGroupName
from tblSecurityGroup
inner join tblUserSecurityGroup
on tblSecurityGroup.SecurityGroupID = tblUserSecurityGroup.SecurityGroupID
inner join tblUser
on tblUserSecurityGroup.UserID = tblUser.UserID
where tblUser.UserID = 1
and tblSecurityGroup.SecurityGroupID not in (tblUserSecurityGroup.SecurityGroupID);
尝试 2 -
select tblSecurityGroup.SecurityGroupName
from tblSecurityGroup
inner join tblUserSecurityGroup
on tblSecurityGroup.SecurityGroupID = tblUserSecurityGroup.SecurityGroupID
inner join tblUser
on tblUserSecurityGroup.UserID = tblUser.UserID
where tblUser.UserID = 1
and not exists (select tblSecurityGroup.SecurityGroupID
from tblSecurityGroup
where tblUserSecurityGroup.SecurityGroupID = tblSecurityGroup.SecurityGroupID);
非常感谢对 nooby 学生的指导。
【问题讨论】:
-
这些尝试的结果如何?
-
完整运行我的查询不会带回任何东西。运行每次尝试排除最后一行会返回用户所属的安全组。
-
您使用的是 MySQL 还是 SQL Server?不要标记未涉及的产品...
-
抱歉,标签已修改。
标签: sql sql-server