SQL Multiple COUNT() from two tables, within a LEFT JOIN

У меня есть три таблицы, я хочу выбрать все данные из одной из таблиц, а также собрать COUNT о том, сколько раз эта конкретная строка данных связана в двух других таблицах.

Итак, SELECT all data from site_projects. Затем верните COUNT of site_project_members WHERE site_projects. id = site_project_members. pid, а также вернуть COUNT из site_project_tasks WHERE site_projects. id = site_project_members. pid

Надеюсь, я понятно объясняю, в запросе все выглядит правильно. и он без проблем запрашивает базу данных (MySQL). За исключением он возвращает сумму обоих подсчетов как обе вещи. (см. ниже структуры таблиц)

site_projects

id | title     | desc      | start      | deadline   | progress

1  | Project 1 | a project | 1321748906 | 1329847200 | 20

site_project_members

id | pid | uid | img | hidden
1  | 1   | 1   | 1   | 0
2  | 1   | 2   | 2   | 0

site_project_tasks

id | pid | desc   | completed
1  | 1   | Task 1 | 1
1  | 1   | Task 2 | 0

Вот мой запрос:

SELECT p.`id`, p.`title`, p.`desc`, p.`progress`, p.`start`, p.`deadline`, COUNT(m.`id`) as `members`, COUNT(t.`id`) as `tasks` FROM `site_projects` p LEFT JOIN `site_project_members` m ON p.`id`=m.`pid` LEFT OUTER JOIN `site_project_tasks` t ON p.`id`=t.`pid` ORDER BY p.`id` ASC

Результат, который я получаю:

id | title     | desc      | progress | start      | deadline   | members | tasks
1  | Project 1 | a project | 20       | 1321748906 | 1329847200 | 4       | 4

Оба значения "4" должны быть 2. однако это не так :S Кто-нибудь может помочь? Очень признателен

Спасибо, Дэн

10
задан dgw 3 February 2012 в 10:50
поделиться