Как правильно составить SQL-запрос в этом случае??

Шелест

Новичок
Добрый день,господа.
Необходима Ваша помощь вот в такой ситуации:
Исходник (дамп + структура):
https://cloud.mail.ru/public/FAUz/9UkFF1ZFK
Задача
Нужно получить факультеты,группы которые относятся к этим факультетам и количество студентов на факультете и в группах.

Что сделал:
PHP:
SELECT facultys.faculty_name,groups.group_name, COUNT(student.id) as num,COUNT(student.id)as group_num
FROM facultys
LEFT OUTER JOIN student ON student.faculty_id = facultys.id
LEFT OUTER JOIN groups ON student.group_id = groups.id
GROUP BY facultys.faculty_name

Т.е. удалось получить общее количество студентов для факультета и первую группу этого факультета.
Но нужно чтобы запрос вытаскивал все группы факультета и считал количество людей,отдельно для каждой группы.Пока не понял как это сделать.
Пример как должно выглядеть:
Исторический - 2
ФЛ-321 - 1
ФЛ - 234 - 1 (вот эту часть не получил)
Как подправить запрос??
Благодарю за уделенное время.
 

AnrDaemon

Продвинутый новичок
Порядок объединения измени.
Факультеты -> Группы -> Студенты
 

Шелест

Новичок
Порядок объединения измени.
Факультеты -> Группы -> Студенты
Если я Вас правильно понял:

PHP:
SELECT facultys.faculty_name,groups.group_name, COUNT(student.id) as num,COUNT(student.id)as group_num
FROM facultys
LEFT OUTER JOIN groups ON student.group_id = groups.id
LEFT OUTER JOIN student ON student.faculty_id = facultys.id
GROUP BY facultys.faculty_name
Такой запрос приводит к ошибке : #1054 - Unknown column 'student.group_id' in 'on clause'
 

Шелест

Новичок
Решил вот так:

Код:
SELECT facultys.faculty_name,groups.group_name, COUNT(student.id) as num,COUNT(student.id)as group_num
FROM facultys
LEFT OUTER JOIN student ON student.faculty_id = facultys.id
LEFT OUTER JOIN groups ON student.group_id = groups.id
GROUP BY facultys.faculty_name, groups.group_name
 

AnrDaemon

Продвинутый новичок
Именно. Не знаю, с какого перепугу у вас в стедентах факультет затесался, но в данном запросе он лишний.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
группировка выполняется по какому-то полю - или по id группы, или по id факультета,
так что если надо считать количество и в группах, и в факультетах - нужно два запроса
 
Сверху