SQL 找出拥有另一个权限的所有用户中有多少用户拥有每个权限(BITWISE)
SQL find out how many users have each permission of all users who have another permission (BITWISE)
所以我有一个 table 用户,他们在两列中具有按位权限。其中一列是 permissions
,另一列是 app1
以下根据permissions
中的值显示所有有权查看app1
的用户。 app1
列中的值将决定它们在 app1 中的角色。
SELECT `authorized_users`.* FROM `authorized_users` WHERE `permissions` & (SELECT `bits` FROM `user_permissions` WHERE `permission_name` = 'app1' AND `app` = 'global')
我需要查看 app1
中每个角色有多少人。他们都必须有权访问 app1
。这再次由 permissions
列中的值决定,可以使用以下方法找到它们必须具有的值:
SELECT `bits` FROM `user_permissions` WHERE `permission_name` = 'app1' AND `app` = 'global'
我想要包含以下列的结果:
supplier
、client
、consultant
每个显示每个角色有多少人。一个用户可以有多个角色,因此使用 BITWISE
user_permissions
看起来像这样:
任何帮助将不胜感激:)
您需要 LEFT
连接 user_permissions
到 authorized_users
和聚合:
SELECT p.permission_name, COUNT(u.permissions) counter
FROM user_permissions p LEFT JOIN authorized_users u
ON u.permissions & p.bits
WHERE p.app = 'app1'
GROUP BY p.permission_name
所以我有一个 table 用户,他们在两列中具有按位权限。其中一列是 permissions
,另一列是 app1
以下根据permissions
中的值显示所有有权查看app1
的用户。 app1
列中的值将决定它们在 app1 中的角色。
SELECT `authorized_users`.* FROM `authorized_users` WHERE `permissions` & (SELECT `bits` FROM `user_permissions` WHERE `permission_name` = 'app1' AND `app` = 'global')
我需要查看 app1
中每个角色有多少人。他们都必须有权访问 app1
。这再次由 permissions
列中的值决定,可以使用以下方法找到它们必须具有的值:
SELECT `bits` FROM `user_permissions` WHERE `permission_name` = 'app1' AND `app` = 'global'
我想要包含以下列的结果:
supplier
、client
、consultant
每个显示每个角色有多少人。一个用户可以有多个角色,因此使用 BITWISE
user_permissions
看起来像这样:
任何帮助将不胜感激:)
您需要 LEFT
连接 user_permissions
到 authorized_users
和聚合:
SELECT p.permission_name, COUNT(u.permissions) counter
FROM user_permissions p LEFT JOIN authorized_users u
ON u.permissions & p.bits
WHERE p.app = 'app1'
GROUP BY p.permission_name