我的数据库有一个关于使用SQL查询获取结果的问题。 我有5个表,我想加入特定的连接,以获取有关它的所有信息。 有我的表:
教训
教师
lesson_teacher
类
部分
事实上,我的课程可以有不止一位老师,所以我在他们两人之间建立了1-n关系表。
课程中只有一个课程和一个部分,因此我不必使用新表格进行链接。
我想我的方式很好。当我在数据库中选择信息时,一切正常,除非我想使用“WHERE”子句指定一个或多个参数。
这是我的问题:
SELECT teachers.name, lessons.lesson_name, classes.classe, sections.section FROM lesson_teacher
JOIN teachers ON lesson_teacher.id_teacher = teachers.id
JOIN lesson ON lesson_teacher.id_lesson = lessons.id
LEFT OUTER JOIN sections ON lesson.id_section = sections.id
LEFT OUTER JOIN classes ON lesson.id_classe = classes.id
我的所有数据都有4列,我的课程显示得很好,一切正常。
为什么,当我使用“WHERE”子句时,我的回归中没有行? 例如:
WHERE classes.classe = 'BMMP33'
答案 0 :(得分:3)
WHERE
子句导致LEFT JOIN
上的classes
行为像INNER JOIN
,这可能不是您想要的行为。
尝试将WHERE
过滤器移至JOIN
:
SELECT teachers.name,
lessons.lesson_name,
classes.classe,
sections.section
FROM lesson_teacher
JOIN teachers
ON lesson_teacher.id_teacher = teachers.id
JOIN lesson
ON lesson_teacher.id_lesson = lessons.id
LEFT OUTER JOIN sections
ON lesson.id_section = sections.id
LEFT OUTER JOIN classes
ON lesson.id_classe = classes.id
AND classes.classe = 'BMMP33'