我需要查询帮助以获取用户的所有权限。
我有一个用户名,我需要获得该用户的所有权限。因此,我需要为用户ID获取所有组,为用户提供每个组的所有角色,然后获取各种角色的所有权限。
我对单个多对多关系查询很好,但似乎可以管理这个嵌套查询。
我的单个多对多查询示例:
SELECT [Permission].*
FROM [Permission] INNER JOIN
Roles_Permissions ON Permission.PermissionID = Roles_Permissions.PermissionID INNER JOIN
Role ON Roles_Permissions.RoleID = Role.RoleID
WHERE (Role.RoleID = 5)
答案 0 :(得分:0)
假设表可用且其结构遵循permission-role_permissions-role建议的方案,您可以通过以下查询实现所需:
SELECT p.*
FROM [Permission] p
JOIN Roles_Permissions rp
ON p.PermissionID = rp.PermissionID
JOIN Group_Roles gr
ON rp.RoleID = gr.RoleID
JOIN User_Groups ug
ON gr.GroupID = ug.GroupID
WHERE ug.UserID = /*desired UserID*/
实际上您不需要加入User
,Group
和Role
表,因为这些实体所需的只是ID
之间的绑定,已经在关系表中提供。