我有下表:
People
---------
ID | Name
---------
1 | John
2 | Sam
我有另一张桌子:
Permissions
-----------
ID | Perm
-----------
1 | View
2 | Edit
3 | Delete
这两个表在第三个表中链接:
UserPermissions
----------------------
ID | User | Permission
----------------------
1 | 1 | 1 (View)
2 | 1 | 3 (Delete)
3 | 2 | 1 (View)
我正在尝试选择一个“总”权限类型表,如果我想获得用户的权限(让我们说用户2(Sam)),我会得到下表:
UserPermissions
------------------
Permission | User
------------------
1 (View) | 2
2 (Edit) | NULL (Or some other nullish value)
3 (Delete)| NULL
我最近才开始使用MySQL,而且我不知道我应该尝试使用哪些搜索字词来获取类似查询的示例。有谁知道我应该搜索什么类型的查询/实现这个的方法?
答案 0 :(得分:1)
如果您想为一位用户执行此操作,则需要left outer join
:
select p.*, up.user;
from Permissions p left outer join
UserPermissions up
on p.Permission = up.Permission and
up.User = 2;
这适用于一个用户。
答案 1 :(得分:1)
听起来你只是在寻找OUTER JOIN
:
SELECT P.Id, P.Perm, UP.Id User
FROM Permissions P
LEFT JOIN UserPermissions UP ON P.Id = UP.Permission