对于我的查询,我有两个表,定义如下:
权限
表:
| permission_id | permission_description |
|
| 1 | Create User |
| 2 | Edit User |
| 3 | Delete User |
用户权限
表:
| permission_id | user_id |
|
| 1 | 1 |
| 1 | 2 |
| 3 | 2 |
| 3 | 5 |
| 1 | 3 |
| 3 | 1 |
现在,我需要检索
全部的
中的权限
permissions
表,其中有一列指示用户
user_id
属于
1
中的每个权限都存在
users_permissions
表。
所以,我的
期望输出
因为查询将是:
| permission_id | permission_description | has_permission |
|
| 1 | Create User | TRUE |
| 2 | Edit User | FALSE |
| 3 | Delete User | TRUE |
到目前为止,我尝试了以下查询,但它返回所有
权限
以及所有
用户标识
价值观:
SELECT permissions.permission_id,
permission_description,
CASE WHEN user_id = 1 THEN 'TRUE' ELSE 'FALSE' END AS has_permission
FROM permissions
INNER JOIN users_permissions ON permission.permission_id = users_permissions.permissions_id;
我怎么才能把这个限制在一个条目
permission
?
为了清晰起见,最终目标是获取可用权限的列表并标记用户已经拥有的权限。