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'

我想要包含以下列的结果: supplierclientconsultant 每个显示每个角色有多少人。一个用户可以有多个角色,因此使用 BITWISE

user_permissions 看起来像这样:

任何帮助将不胜感激:)

您需要 LEFT 连接 user_permissionsauthorized_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