我有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)
感谢您的帮助。 主题表中的所有主题
答案 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上的过滤器移至外部联接部分