我的智慧结束了。我疯狂地搜索,阅读了大量的数据库教科书,上帝知道有多少在线指南,博客和论坛。有人能让我摆脱困境吗?
PseudoSchema Diagram(警告:虽然很漂亮,但不是采用甚至远程接近ER图的格式!主键是粗体,外键是斜体。)
鉴于上述一组表将用户与组关联到权限,然后是一组可以各自需要权限执行的活动,您如何找到这个:
显示用户X可以执行的所有活动。即:用户X是G组和F组的成员;组G和F与特权P,Q,R和S相关;告诉我所有需要P,Q,R或S 特权的活动。
你是怎么做到的?
答案 0 :(得分:1)
SELECT DISTINCT Activity.id, Activity.name, Activity.description
FROM Activity
INNER JOIN Privilege ON Activity.requires_privilege = Privilege.id
INNER JOIN Group ON Privilege.group_id = Group.id
INNER JOIN UserGroup ON Group.id = UserGroup.group_id
WHERE UserGroup.user_id = :X
应该得到你想要的。还有其他选择。
答案 1 :(得分:0)
select a.*
from user u
inner join usergroup ug on u.id = ug.user_id
inner join privilege p on ug.group_id = p.group_id
inner join activity a on p.id = a.requires_privilege
where u.name = 'X'