У меня есть 4 таблицы:
user,
administrative_division,
assignment,
user_has_assignment
Между пользователем и administrator_division существует отношение многие-к-одному, где многие - пользователь, а одна - административная_разделение.Между пользователем и назначением существует связь «многие ко многим» через таблицу user_has_assignment.
Я могу узнать, сколько пользователей в каждом административном подразделении, используя эту команду:
select division_id, count(*) from user group by division_id;
Что, например, дает мне что-то вроде этого:
division_id count(*)
1 4
2 10
и т. д.
Я могу узнать, сколько назначений принадлежит каждому пользователю, используя эту команду:
select user_id, count(*) from user_has_assignment group by user_id;
, которая дает аналогичный результат
user_id count(*)
1 2
2 10
Но я неНе знаю, как можно получить в одном запросе такой результат:
division_id user_count assignment_count
1 10 20
2 2 4
, где user_count - это общее количество пользователей в каждом административном-административном подразделении, а назначение-общее количество - это общее количество всех назначений, принадлежащих пользователям из одного конкретного административного подразделения.