我有两张表,一张称为权限,一张称为角色,它们通过 NN 关系中名为 RolePermissions 的第三张表相关联。
Permissions
id <- PK
name
Roles
id <- PK
name
RolePermisions
RoleId <-PK
PermissionId <-PK
isAllowed
我想要的是获取特定角色的完整权限列表,以及当 RolePermission 表中没有该角色的值时为 NULL。左连接通常可以解决问题,但我无法解决这个问题。
基本上假设我有以下值:
在许可中:
1 - Per1
2 - Per2
3 - Per3
在角色中:
1 - Role1
2 - Role2
在 RolePermissions 中:
RoleId - PermissionId - isAllowed
1 1 true
1 2 false
1 3 true
2 1 true
以下查询排序有效,但不会为那些不在 RolePermissions 中的值返回 NULL:
select permissions.name, rolepermissions.allowed
FROM permissions LEFT JOIN rolepermissions
ON rolepermissions.permissionId = permissions.id
WHERE rolepermissions.roleId = 2;
我在查询角色 2 时要寻找的结果是
Per1 - true
Per2 - NULL
Per3 - NULL