SQL&引用;显示用户X可以执行的所有活动。”;
我束手无策。我疯狂地搜索,阅读了大量数据库教科书,天知道有多少在线指南、博客和论坛。有人能帮我摆脱痛苦吗 (警告:虽然很漂亮,但格式甚至不接近ER图表!主键为粗体,外键为斜体。) 鉴于上述一组将用户与组关联到权限的表,以及一组可能需要权限才能执行的活动,您如何发现这一点: 显示用户X可以执行的所有活动。即:用户X是组G和组F的成员;组G和F与特权P、Q、R和S相关;显示需要P、Q、R或S特权的所有活动 你是怎么做到的SQL&引用;显示用户X可以执行的所有活动。”;,sql,Sql,我束手无策。我疯狂地搜索,阅读了大量数据库教科书,天知道有多少在线指南、博客和论坛。有人能帮我摆脱痛苦吗 (警告:虽然很漂亮,但格式甚至不接近ER图表!主键为粗体,外键为斜体。) 鉴于上述一组将用户与组关联到权限的表,以及一组可能需要权限才能执行的活动,您如何发现这一点: 显示用户X可以执行的所有活动。即:用户X是组G和组F的成员;组G和F与特权P、Q、R和S相关;显示需要P、Q、R或S特权的所有活动 你是怎么做到的 SELECT DISTINCT Activity.id, Activity.
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
你应该得到你想要的。还有其他选择
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'