2009-10-03 5 views
0

При использовании MySQL, вы можете сделать что-то вроде этого:MYSQL получить количество результатов

SELECT * FROM student WHERE teacher_id = 1 

... то вы получите количество результатов, и с этим результатом. Но я хочу только количество результатов, но потом каждого учителя.

Возможно ли это в mysql как sizeof или что-то в этом роде?

Кроме того, если есть учителя, у которых нет учеников, правда ли, что их нет в списке? или он должен сказать 0?

ответ

3

Вы хотите, чтобы количество учеников каждого учителя? Вы можете использовать что-то вроде этого:

SELECT teacher_id, count(*) AS student_count 
FROM student 
GROUP BY teacher_id 

Это не будет включать учителей, у которых нет учеников. Для того, чтобы включить их в результатах, вы должны использовать JOIN (если у вас есть teacher таблицу):

SELECT teacher.id, sum(if(student.id IS NULL, 0, 1)) AS student_count 
FROM teacher 
    LEFT JOIN student ON student.teacher_id=teacher.id 
GROUP BY teacher.id 
+0

если есть учителя, которые не имеют студентов это правда, что нет в списке? или он должен сказать 0? – matthy

1
SELECT teacher_id, count(*) as count FROM student GROUP BY teacher_id; 
1

Использование:

SELECT t.teacher_id, 
      IFNULL(ns.num_students, 0) 
    FROM TEACHERS t 
LEFT JOIN (SELECT s.teacher_id, 
        COUNT(s.student_id) 'num_students' 
      FROM STUDENTS s 
     GROUP BY s.teacher_id) ns ON ns.teacher_id = t.teacher_id 
Смежные вопросы