Запрос на JOINS и отличительные - PullRequest
0 голосов
/ 10 мая 2011

Ниже приведены не совсем те же таблицы, но я просто имитирую структуру таблицы.

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;

Может кто-нибудь, пожалуйста, укажите лучший способ?

1 Ответ

0 голосов
/ 10 мая 2011
SELECT c.parent_id,COUNT(d.dept_id),COUNT(DISTINCT(d.emp_id))
FROM company c LEFT JOIN department d ON c.comp_id = d.comp_id 
GROUP BY c.parent_id
...