我使用sql Server 2005.我有三个表 – 用户,组和组用户. GroupUsers包含两对多关系的两个PK.
我想获得一个组的所有用户信息,如下所示:
SELECT * FROM GroupUsers JOIN Users ON GroupUsers.UserID = Users.UserId
我想创建这个视图的倒数 – 我想要一个没有附加到特定组的所有用户的列表.以下查询将完成此操作:
SELECT * FROM Users WHERE UserID NOT IN (SELECT UserID FROM GroupUsers WHERE GroupID=@GroupID)
但是,我不想指定该组,我想知道如何将其转换为加入GroupID,然后连接UsersID和所有用户信息的视图,但仅适用于非附件用户.
我不知道该怎么做,也许与EXCEPT运算符有什么关系?
更新:
我认为这是我的解决方案,除非有人想出更好的东西:
SELECT G.GroupId,U.* FROM Groups G CROSS JOIN Users U WHERE U.UserId NOT IN ( SELECT UserId FROM GroupUsers WHERE GroupId=G.GroupId )