MYSQL получить количество результатов - PullRequest
0 голосов
/ 03 октября 2009

Когда вы используете mysql, вы можете сделать что-то вроде этого:

SELECT * FROM student WHERE teacher_id = 1

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

Это возможно в mysql, как sizeof или что-то еще?

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

Ответы [ 3 ]

3 голосов
/ 03 октября 2009

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

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
1 голос
/ 03 октября 2009

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

   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
1 голос
/ 03 октября 2009
SELECT teacher_id, count(*) as count FROM student GROUP BY teacher_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...