在我的MySQL数据库中,我有三个表students
,classes
,courses
。
一个class
有很多students
。
一个class
有很多courses
。
courses
表具有一个布尔字段active
和一个字符串字段name
。
students
表具有id
字段。
所以总体关系是(抱歉,如果不清楚,我不确定如何更好地说明这种关系):
students (many_to_one) classes (one_to_many) courses
我想编写一个SQL查询来获取students
(其courses
(通过class
)在名称('foo', 'bar','etc')
内且active
中的select stu.id
from students stu
inner join classes clz ON clz.id = stu.class_id
inner join courses cour ON cour.class_id = clz.id
where cour.active=true
and cour.name in ('foo', 'bar', 'etc');
的ID 。
如何编写此SQL?
我尝试过:
alias pip=pip3
还好吗?
答案 0 :(得分:1)
您的查询似乎还可以,只是您在内部joins子句中使用了==而不是=:
select stu.id
from students stu
inner join classes clz ON clz.id = stu.class_id
inner join courses cour ON cour.class_id = clz.id
where cour.active = true
and cour.name in ('foo', 'bar', 'etc');