Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL&引用;显示用户X可以执行的所有活动。”;_Sql - Fatal编程技术网

SQL&引用;显示用户X可以执行的所有活动。”;

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

我束手无策。我疯狂地搜索,阅读了大量数据库教科书,天知道有多少在线指南、博客和论坛。有人能帮我摆脱痛苦吗

(警告:虽然很漂亮,但格式甚至不接近ER图表!主键为粗体,外键为斜体。)

鉴于上述一组将用户与组关联到权限的表,以及一组可能需要权限才能执行的活动,您如何发现这一点:

显示用户X可以执行的所有活动。即:用户X是组G和组F的成员;组G和F与特权P、Q、R和S相关;显示需要P、Q、R或S特权的所有活动

你是怎么做到的

 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'