2012-06-17 4 views
0

Я следующий запрос:Count (*) позволяют группе нулем

select count(*) as memo_count, student_id from memo group by student_id 

который возвращает следующий результирующий набор:

memo_count  student_id 
3     0 
8     1 

Однако то, что я очень хотел бы его вернуть этот :

memo_count  student_id 
3     0 
8     1 
0     2 

То, что происходит, группа К фильтрует любой COUNT (*), который возвращает 0, это не то, что я желаю. Как это обойти? Благодарю.

+0

Проверьте это: http://stackoverflow.com/questions/1980678/how-to-return-empty-groups-in-sql-group-by- item – kol

+1

Если он вернет 0, это означает, что в этой таблице не существует 'student_id'. У вас есть еще одна таблица student_id, чтобы присоединиться к ней, и все они вернут? –

+0

Он не может подсчитать вещи, которых не существует ... вы хотите, чтобы одна запись для каждого ученика? – Ryan

ответ

2

Вы можете попробовать что-то вроде этого. Предполагая, что у вас есть таблица студентов ...

Select count(m.id), s.id from student s 
left outer join memo m on m.student_id = s.id 
group by s.id 
Смежные вопросы