用于多个多对多关系的SQL查询
问题描述:
我需要查询帮助才能获取用户的所有权限。用于多个多对多关系的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)
答
假设表可用其结构遵循许可的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*/
其实你并不需要加入User
,Group
和Role
表,因为你从这些实体需要的是他们的ID
之间的结合s,已经在关系表上可用。
你的问题到底是什么?在这种情况下,您需要多一个实体,您创建了Groups_Roles? – OctoCode