我有两个这样的表:

测验

quizNum | quizName
------------------
1       | chapter 1
2       | chapter 2
3       | chapter 3


学生评估

stuNum | quizNum | assessmentMark
-----------------------------------
2012   | 1       | 10
2012   | 2       | 8
2013   | 1       | 10
2014   | 1       | 5


我想得到这样的结果

quizNum | quizName      | attempedstudent
--------------------------------------------
1       | chapter 1     | 3
2       | chapter 2     | 1
3       | chapter 3     | 0


描述:所有两个表都已连接..我想计算通过quziNum完成测验的学生总数

这是我尝试过的示例组合:

$sql = "select a.quizNum, (count(a.stuNum)) as attemptedstudent ,c.quizName,c.quizDateFrom from studentassessment a join quiz c on a.quizNum=c.quizNum";


我这样写,结果显示它计算了所有stuNum(学生)。我是否必须使用另一种方式,例如“与众不同”?

最佳答案

您需要left joinQuizstudentassessment,以确保显示所有来自Quiz的数据以及计数。

select
q.quizNum,
q.quizName,
count(sa.stuNum) as attempedstudent
from Quiz q
left join studentassessment sa on sa.quizNum = q.quizNum
group by q.quizNum;

10-04 15:51