Ниже приведены не совсем те же таблицы, но я просто имитирую структуру таблицы.
Table - Columns
Company - comp_id (primary), parent_id;
Department - comp_id, emp_id, dept_id(primary);
parent_id- one to many - comp_id;
comp_id - one to many - dept_id;
dept_id - one to many - emp_id;
requirement is to retrieve parent_id, count(dept_id), count(emp_id) group by parent_id
Я пытался выполнить следующий запрос, но он требует использования DISTINCT, который может снизить производительность.
SELECT c.parent_id,
COUNT(DISTINCT c.comp_id),
COUNT(d.emp_id)
FROM company c
LEFT JOIN department d ON c.comp_id = d.comp_id
WHERE c.parent_id = ?
GROUP BY c.parent_id;
Может кто-нибудь, пожалуйста, укажите лучший способ?