Mysql 查询筛选器权限
我需要一些关于MySQL查询的帮助。 学生可以从他所属的团体或个人获得借书许可。这些书也与团体有关 我想得到所有的书,以一种更好的方式,一个学生可以得到根据他的权限或组权限。另外,如何从一个或多个groupID中筛选 请注意,如果一本书不在权限表中,则表示它对每个人都可用 下面是数据库模式的示例Mysql 查询筛选器权限,mysql,sql,database,performance,Mysql,Sql,Database,Performance,我需要一些关于MySQL查询的帮助。 学生可以从他所属的团体或个人获得借书许可。这些书也与团体有关 我想得到所有的书,以一种更好的方式,一个学生可以得到根据他的权限或组权限。另外,如何从一个或多个groupID中筛选 请注意,如果一本书不在权限表中,则表示它对每个人都可用 下面是数据库模式的示例 --table book-- bookID name --table group-- groupdID name -- table student -- studID
--table book--
bookID name
--table group--
groupdID name
-- table student --
studID name
-- table group_book --
bookID groupID
-- table student_group--
groupdID studID
-- table student_book_permission --
bookID studID
-- table group_book_permission --
bookID groupID
谢谢你的帮助和时间
select s.studid, s.name, b.bookid, b.name
from student s
left join student_book_permission sbp on s.studid=sbp.studid
left join book b on sbp.bookid=b.bookid
union distinct
select s.studid, s.name, b.bookid, b.name
where s.studid=?
from student s
left join student_group sg on s.studid=sg.studid
left join group_book_permission gbp on sg.groupid=gbp.groupid
left join book b on gbp.bookid=b.bookid
where s.studid=?
学生可以访问的书籍列表由两个查询联合生成。顶部的查询获取学生有权单独阅读的书籍列表。底部查询根据组权限列出图书。Union distinct确保一本书在列表中只显示一次。group\u book和group\u book\u权限表之间的区别是什么?前者对权限有何影响?它没有,只是以一种信息性的方式,以便按组对其进行过滤。很多,但我还需要获取所有权限都为空的书籍(意味着每个人都有权访问它)添加另一个select,然后使用union选择具有空权限的书籍(组合为的左联接为空)