2012-10-23 34 views
0

我在这里有点进退两难,并感谢意见在查询时mysql的变量设置为true或false

我有以下模式

User{id,name} 
Class{id} 
textbook{id,name,public} 
class_textbook{id,class_id,textbook_id} 
class_membership{id,user_id,class_id} 

textbook.public是一个布尔场标记是否有教科书可供所有学生下载或仅由参与本书分配的课程的学生提供

我想选择每个可供用户使用的教科书(公开或分配在课堂中用户参与)但我h大家知道哪本书是公开的,哪些不是,哪些课程是用公共教科书教的。要解决这个

的一种方法是通过运行两个查询 一个让每一个教科书提供给用户和一个找到公立

或者我可以定义一个MySQL的函数为我做到这一点。

+0

子查询FTW。 [For Instance](http://www.ehow.com/way_5245089_mysql-subqueries-tutorial.html) – digitlworld

回答

1
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_id是与所涉及的用户相关联的ID号码。

相关问题