Ошибка в том, что у вас коррелированный запрос.Предложение корреляции (where
в подзапросе) использует столбец из внешнего запроса, который не агрегируется.Кроме того, у вас есть столбец topic
, которого нет в group by
.
. Мне кажется, что ваш запрос проще записать так:
select a.lectureid, count(*) as attendance
from attendancesheet a
group by a.lectureid;
Я заметил, что выесть topic
в select
.Это тоже проблема.Возможно, вы хотите:
select l.lectureid, l.topic, count(*) as attendance
from attendancesheet a join
lecture l
on a.lectureid = l.lectureid
group by l.lectureid;
Или, если у вас есть studentid
в lecture
, возможно:
select l.lectureid, l.topic, count(*) as attendance
from lecture l
group by l.lectureid;
РЕДАКТИРОВАТЬ:
Структура данных не 'Это не имеет смысла для меня, но, возможно, вам нужны оба ключа для join
:
select l.lectureid, l.topic, count(*) as attendance
from attendancesheet a join
lecture l
on a.lectureid = l.lectureid and a.studentid = l.lectureid
group by l.lectureid;