SQL查询涉及三个表

时间:2019-11-18 15:24:05

标签: mysql sql

在我的MySQL数据库中,我有三个表studentsclassescourses

一个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

还好吗?

1 个答案:

答案 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');

DEMO HERE