【问题标题】:SQL find out how many users have each permission of all users who have another permission (BITWISE)SQL找出拥有另一个权限的所有用户的每个权限有多少用户(BITWISE)
【发布时间】:2021-07-07 12:19:41
【问题描述】:

所以我有一个用户表,他们的按位权限分为两列。其中一列是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 看起来像这样:

任何和所有的帮助将不胜感激:)

【问题讨论】:

  • 提供示例数据作为 CREATE TABLE + INSERT INTO 脚本和该数据的所需输出。

标签: mysql count mariadb bit-manipulation


【解决方案1】:

您需要 user_permissionsauthorized_usersLEFT 连接和聚合:

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

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 2013-09-15
    • 1970-01-01
    • 2012-03-29
    • 2017-07-15
    • 2012-03-16
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多