问题描述
我有3张桌子:
- 学生(列表)
- 课程(额外课程列表)
- 题词(每个学生参加会议的题词清单)
我想为每个学生显示题字数(现在没有日期^^)
这是我的查询:
SELECT
student.id,student.session_token AS available_token,count(inscription_student.id_inscription) AS nb_inscription_in_progress
FROM student
LEFT JOIN inscription_student ON student.id = inscription_student.id_student_join
WHERE 1
它仅返回1个结果... 怎么了?
http://www.sqlfiddle.com/#!9/40fd198/5
解决方法
它仅返回1个结果...问题在哪里?
您的查询在select
子句中使用聚合函数,但没有group by
子句:因此,所有行都聚合为单行,并为学生ID和令牌选择随机值。 / p>
您需要group by
个学生,这样每个学生才能获得一排:
select
s.id,s.session_token as available_token,count(i.id_inscription) as nb_inscription_in_progress
from student s
left join inscription_student i on s.id = i.id_student_join
group by s.id