【发布时间】:2013-11-14 19:05:04
【问题描述】:
我有一个用户表和一个组表以及一个将用户与组链接的表。默认组称为“所有用户”。所有新用户都被放置在这个组中。然后将它们链接到更具体的组,例如销售或采购等,但它们也保留在“所有用户”中。 我想查询“所有用户”组中的所有用户,但不是任何其他组的成员。
我希望我解释得足够好。
谢谢, 鲍勃
【问题讨论】:
-
你真的同时使用 MySQL 和 Access 吗?
我有一个用户表和一个组表以及一个将用户与组链接的表。默认组称为“所有用户”。所有新用户都被放置在这个组中。然后将它们链接到更具体的组,例如销售或采购等,但它们也保留在“所有用户”中。 我想查询“所有用户”组中的所有用户,但不是任何其他组的成员。
我希望我解释得足够好。
谢谢, 鲍勃
【问题讨论】:
SELECT userid, count(*) group_count
FROM user_groups
GROUP BY userid
HAVING group_count = 1
如果一个用户只在一个组中,它必须是 All Users 组,这只会列出那些用户。
【讨论】:
CountOfGroupID,为什么还要在HAVING 子句中重复Count(dbo_groupMember.GroupID) 表达式?也许 DBMS 会足够聪明,不会重复计算,但为什么会这样呢?
这是假设您的名为 AllUsers 的表对每个名为 id 的用户都有一个唯一的 ID,并且您的 Group 表有一个链接到 AllUsers.id 的外键 userId。
SELECT * FROM AllUsers WHERE AllUsers.id != userId;
如果我理解了你的问题,那就应该这样做。
【讨论】:
你有三个表,比如说:
tblUser: userid, username
tblgroup: groupid, groupname
tblUserGroup: fkuserid, fkgroupid
创建新用户时,应自动在tblUserGroup 中创建一条记录,链接userid 和groupid。
当用户添加新组时,您只需在tblUserGroup 中添加一条相同的userid 和新的groupid 记录。您不需要删除第一条记录,因为它们现在在两个组中。
【讨论】: