我在查找用户的组成员身份时遇到问题(是的,不是很清楚)
例如:
我有两张table:
-其中一个包含具有其权限的用户列表:
userId | permission
-------|-----------
1 | build
1 | play
1 | jump
2 | build
2 | jump
2 | run
3 | drink
3 | build
4 | run
-第二个表包含组和him权限:
groupId | permission
--------|-----------
G1 | build
G1 | jump
G2 | play
G2 | jump
G3 | drink
G3 | run
G4 | drink
G5 | build
我的目标是找到用户可以拥有的所有组:
userId | groupId
-------|-----------
1 | G1
1 | G2
1 | G5
2 | G1
2 | G5
3 | G4
3 | G5
我创建了一个请求来查找属于该组的用户,但我不能为我的所有组执行此操作(我的数据集中有1000多个组):
SELECT DISTINCT userId
FROM (
SELECT userId, count(*) AS nbData
from table_a
WHERE permission in (
SELECT permission
from table_b
where groupId = 'g1'
)
group by userId
) as t
where nbData = (SELECT count(*) from table_b where groupId = 'g1');
如果用户拥有某个组的所有权限,则该用户属于该组。目标是找到每个用户的每个组
3条答案
按热度按时间e1xvtsh31#
像这样的方法可能有用:
pkwftd7m2#
如果两个表中都没有重复项,则可以在“权限”和“聚合”中将这些表连接在一起:
如果该组的所有权限都匹配,则该用户在该组中。
slwdgvem3#
例如。: