MYSQL显示所有记录和计数相关记录

时间:2011-12-07 06:09:29

标签: mysql count

我有3个表教师科目和作业。当教师登录时,我想显示所有主题,无论他是否是教师,无论是否有相关记录。如果没有相关记录(作业),我希望它显示0.

Teacher Table: Teacher_PK, Teacher_name    
Subject Table:  Subject_PK, Teacher_fk, Subject_name, 
Assignments Table: Assignment_PK, Subject_fk, assignment_name

现在我有这样的话:

"SELECT *, count(a.subject_fk)
        FROM assignment AS b
        LEFT OUTER JOIN subject AS a
        ON a.subject_fk = b.subject_PK
        WHERE a.teacher_fk = $sessionVar
        GROUP BY b.subject_fk
        ORDER BY b.subject_name ASC";

此查询的问题在于它不会显示所有主题,只会在有相关表格时显示主题。

English (3)
Math(2)

我希望它显示的是

English(3)
Math(2)
Gym(0)
Science(0)

感谢您的帮助。 主题表中的所有主题

1 个答案:

答案 0 :(得分:1)

SELECT
  s.*,
  count(a.assignment_pk) as numAssignments
FROM
  Subject s
   LEFT OUTER JOIN Assignments a ON
    s.Subject_pk = a.Subject_fk AND
    a.teacher_fk = $sessionVar
GROUP BY 
  s.*
ORDER BY
  s.subject_name ASC

编辑 - 将教师ID上的过滤器移至外部联接部分