SQL(可能是基本的) - 有3个表的查询

时间:2016-11-08 22:09:06

标签: mysql sql

我有这张桌子:

  • 学生(姓名,学生编号) - 学生表
  • 注册(enrollmentNumber,studentNumber,subject) - 包含学生已注册的科目的表格
  • 成绩(studentNumber,科目,年级) - 具有考试成绩的表格

我完成了这项任务:

  

编写一条返回学生姓名,注册科目和学生成绩的SQL指令   在受试者中获得。 SQL指令还应该返回注册的学生   主题并没有参加该主题的测试(在这种情况下,学生将出席   在“注册”表中,但不在“成绩”表中。)

我开发了这个查询:

.sidebar {
position: fixed // or absolute
}

我知道错误发生在最后的WHERE,因为没有成绩的注册不会出现(这是有道理的)......任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

移动             " e.subject = g.subject" 作为左连接的过滤器。当您在外部联接上使用过滤器作为where的一部分时,它会将其有效地转换为INNER JOIN:

    SELECT * FROM student s
      LEFT JOIN enrollments e ON s.studentNumber = e.studentNumber
      LEFT JOIN grades g ON e.studentNumber = g.studentNumber
          AND e.subject = g.subject