0

关于使用 SQL 查询获取结果,我的数据库有一点问题。我有 5 个表,我想通过特定的连接来获取有关它的所有信息。有我的桌子:

课程

  • 标识(整数)
  • 课程名称(varchar)
  • id_class (int)
  • id_section (int)

教师

  • 标识(整数)
  • 名称(varchar)

课老师

  • 标识(整数)
  • id_lesson (int)
  • id_teacher (int)

班级

  • 标识(整数)
  • 类(varchar)

部分

  • 标识(整数)
  • 部分(varchar)

事实是我的课可以有不止一位老师,所以我在他们两个之间制作了一个 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”子句时,我的 return 中没有行?前任:

WHERE classes.classe = 'BMMP33'
4

1 回答 1

3

WHERE子句导致您的LEFT JOINon表现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'
于 2013-02-26T20:53:57.110 回答