获取顶级组中的所有用户(所有用户都是该组的成员,但也排除同时也是其他子组的成员的用户)

时间:2014-03-10 14:08:40

标签: mysql relation

理论上我有两个表:用户,带有第三个表user_group的组加入它们(告诉哪个用户在哪个组中)。

以下是组的结构(树状):

  

1根

     

1.1 child1

     

1.2 child2

所有用户至少被分配到root组。此外,它们可能(但不是必须)分配给作为根组子级的不同组(例如,child1或child2)。

鉴于组ID,我想检索只有该组ID的用户。有趣的部分是以下场景:如果提供了根组的ID,我们应该只检索根组中存在的用户 - 它们不应该是任何其他子组的成员。

1 个答案:

答案 0 :(得分:0)

还有另一种令人讨厌的方式:

SELECT *
FROM (
  SELECT idUser, idGroup
  FROM UserGroup
  GROUP BY idUser
  HAVING COUNT(idGroup) < 2
)
WHERE idGroup = <group's id you're looking for>

我说烦恼因为我不喜欢双选择。

下面的旧答案:

使用这样的结构:

Users      UserGroup      Groups
------     -----------    ------
idUser     idUserGroup    idGroup
           idUser
           idGroup

你可以试试这个:

SELECT DISTINCT idUser
FROM UserGroup AS UG
WHERE UG.idGroup=1
GROUP BY UG.idGroup

1 ,在子句是 idGroup ,您要搜索:

 WHERE UG.idGroup=<idGroup>