0
我有3张表想加入。 学生,迟到和旷工。如何在3张桌子上正确使用COUNT?
学生包含每个学生所需的信息。
迟到 and 旷工。他们的结构几乎相同。两者都包含像student_id,日期等相同的列...
我的目标是计算旷工和迟到的数目,并把它放在与student_id相同的学生同一行。
Ex。 学生表:
student_id name
a1 Josh
a2 Pete
a3 Gabe
a4 Howard
迟到表:
student_id date
a2 January 1,2016
a4 January 23,2016
旷工表:
student_id date
a1 Feb. 2,2009
a2 August 3,2011
a2 August 4,2011
a4 March 18,2016
a4 June 28,2016
a4 June 29,2016
a4 July 15,2016
a4 July 16,2016
a4 July 29,2016
我已经尝试了一些。但这是迄今为止我发现的最接近的一个。
SELECT students.student_id,
COUNT(absenteeism.student_id) AS absents,
COUNT(tardiness.student_id) AS tardi
FROM students
LEFT JOIN absenteeism ON students.student_id = absenteeism.student_id
LEFT JOIN tardiness ON students.student_id = tardiness.student_id
GROUP BY students.student_id
,结果是
student_id absents tardi
a1 1 0
a2 2 2
a3 0 0
a4 6 6
我只得到了缺席权数。问题是a2和a4始终具有相同数量的缺席和迟到。
正确的结果应该是这样的...
student_id absents tardi
a1 1 0
a2 2 1
a3 0 0
a4 6 1