2017-03-17 146 views
0

我需要查询帮助才能获取用户的所有权限。用于多个多对多关系的SQL查询

  • 用户可以是在0-许多组
    • 组可以有0-许多用户
  • A组可以具有0-许多角色
    • 一个角色可以在0-很多组中
  • 角色可以有0多个权限
    • 权限可以在0 - 许多角色

我有一个用户ID和我需要得到该用户的所有权限。所以我需要获取用户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

你的问题到底是什么?在这种情况下,您需要多一个实体,您创建了Groups_Roles? – OctoCode

回答

0

假设表可用其结构遵循许可的role_permissions角色提出的方案,就可以实现你想要这样的查询内容:

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*/ 

其实你并不需要加入UserGroupRole表,因为你从这些实体需要的是他们的ID之间的结合s,已经在关系表上可用。