programing

SQL은 다른 권한을 가진 모든 사용자의 각 권한을 가진 사용자 수를 확인합니다(BITWISE).

minecode 2022. 11. 30. 21:27
반응형

SQL은 다른 권한을 가진 모든 사용자의 각 권한을 가진 사용자 수를 확인합니다(BITWISE).

두 개의 열에 비트 권한이 있는 사용자 테이블이 있습니다.이 컬럼들 중 하나는permissions또 하나는app1

다음은 볼 수 있는 권한을 가진 모든 사용자를 보여 줍니다.app1의 가치에 근거해permissions. 내부의 값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

언급URL : https://stackoverflow.com/questions/68285936/sql-find-out-how-many-users-have-each-permission-of-all-users-who-have-another-p

반응형