Mysql 在查询时将变量设置为true或false
我在这里有点进退两难,希望大家能发表意见 我有以下模式Mysql 在查询时将变量设置为true或false,mysql,select,Mysql,Select,我在这里有点进退两难,希望大家能发表意见 我有以下模式 User{id,name} Class{id} textbook{id,name,public} class_textbook{id,class_id,textbook_id} class_membership{id,user_id,class_id} 如果教科书可供每位学生下载,或仅可供参与指定课本的班级的学生下载,则tupbook.public是一个布尔字段标记 我想选择用户可以使用的每一本教科书(无论是公开的还是在用户参与的课程中分
User{id,name}
Class{id}
textbook{id,name,public}
class_textbook{id,class_id,textbook_id}
class_membership{id,user_id,class_id}
如果教科书可供每位学生下载,或仅可供参与指定课本的班级的学生下载,则tupbook.public是一个布尔字段标记
我想选择用户可以使用的每一本教科书(无论是公开的还是在用户参与的课程中分配的),但我必须知道哪本书是公开的,哪本不是,哪一个课程是用公开教科书教授的
解决这个问题的一种方法是运行两个查询
一个是让用户可以使用每一本教科书,另一个是找到公共教科书
或者我可以定义一个mysql函数来完成这项工作
SELECT
*
FROM textbook
WHERE id in (SELECT textbook_id FROM class_textbook WHERE class_id IN (SELECT class_id FROM class_membership WHERE user_id = :user_id))
OR public = true
其中:user\u id
是与相关用户关联的id号。子查询FTW。