Sql 用户角色权限查询
我有5个表:user>user\u has\u role>role>role\u has\u permission>permission 用户可以有0个或*个角色。 角色可以具有0或*权限 现在我有一个查询,它将获得属于某个用户的所有权限。 这项工作,但现在我想,如果用户的角色是“超级管理员”,那么所有权限都会加入。但是,如果不在表中指定它们,角色\u具有\u权限 这是一个问题:Sql 用户角色权限查询,sql,Sql,我有5个表:user>user\u has\u role>role>role\u has\u permission>permission 用户可以有0个或*个角色。 角色可以具有0或*权限 现在我有一个查询,它将获得属于某个用户的所有权限。 这项工作,但现在我想,如果用户的角色是“超级管理员”,那么所有权限都会加入。但是,如果不在表中指定它们,角色\u具有\u权限 这是一个问题: SELECT p.name,r.name role FROM user_has_ro
SELECT p.name,r.name role
FROM user_has_role AS ur
JOIN role AS r
ON ur.role_id = r.id
JOIN role_has_permission AS rp
ON r.id = rp.role_id
LEFT JOIN permission AS p
ON rp.permission_id = p.id
WHERE ur.user_id = [USER_ID]
你可以做一个工会:
SELECT p.name,r.name role
FROM user_has_role AS ur
JOIN role AS r
ON ur.role_id = r.id
JOIN role_has_permission AS rp
ON r.id = rp.role_id
LEFT JOIN permission AS p
ON rp.permission_id = p.id
WHERE ur.user_id = [USER_ID]
UNION
SELECT p.name, 'super_admin'
FROM permission
WHERE EXISTS (SELECT * FROM user_has_role, role
WHERE ur.user_id = [USER_ID] and role.role_id = user_has_role.role_id and
role.name = 'super_admin')
“这项工作,但现在我想,如果用户的角色是“超级管理员”,那么所有权限都会被加入”,这让人困惑,你能解释一下吗?谢谢它的工作!我不知道这是否是最好的解决方案,但它现在起作用了。我以后会做更多的研究