我有两个这样的表:
测验
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 join
到Quiz
的studentassessment
,以确保显示所有来自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;