Mysql连接多个表,where子句问题
关于使用SQL查询获取结果,我的数据库有点问题。 我有5个表,我想加入特定的连接,以获得有关它的所有信息。 这是我的桌子: 课程Mysql连接多个表,where子句问题,mysql,join,where-clause,Mysql,Join,Where Clause,关于使用SQL查询获取结果,我的数据库有点问题。 我有5个表,我想加入特定的连接,以获得有关它的所有信息。 这是我的桌子: 课程 id(int) 课程名称(varchar) id_类(int) id_段(内部) 教师 id(int) 名称(varchar) 第一课\u老师 id(int) id_课程(int) 身份证教师(国际) 课程 id(int) 类别(varchar) 章节 id(int) 部分(varchar) 事实上,我的课可以有多个老师,所以我在他们两个之间建立了
- id(int)
- 课程名称(varchar)
- id_类(int)
- id_段(内部)
- id(int)
- 名称(varchar)
- id(int)
- id_课程(int)
- 身份证教师(国际)
- id(int)
- 类别(varchar)
- id(int)
- 部分(varchar)
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
上的LEFT JOIN
像内部JOIN
一样工作,这可能不是您想要的行为
尝试将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
AND classes.classe = 'BMMP33'
WHERE
子句导致classes
上的LEFT JOIN
像内部JOIN
一样工作,这可能不是您想要的行为
尝试将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
AND classes.classe = 'BMMP33'
我通过上课来改变课程,我的坏,对不起:)@Simon没问题,只要你了解每一列的内容。:)我编辑了我的答案,用lesson替换了课程
,希望这是正确的。它不会将左连接更改为内部连接,它只是强制执行与内部连接相同的结果,但需要付出更多的努力。使用您的解决方案,它返回所有数据,即使是不是来自“BMMP33”和my columns classes.classe的数据NULL@Simon我很高兴你找到了答案。:)我通过上课来改变课程,我的坏,对不起:)@Simon没问题,只要你了解每一列的内容。:)我编辑了我的答案,用lesson替换了课程
,希望这是正确的。它不会将左连接更改为内部连接,它只是强制执行与内部连接相同的结果,但需要付出更多的努力。使用您的解决方案,它返回所有数据,即使是不是来自“BMMP33”和my columns classes.classe的数据NULL@Simon我很高兴你找到了答案。:)