У меня есть три таблицы, я хочу выбрать все данные из одной из таблиц, а также собрать COUNT, сколько раз эта конкретная строка данных была связана в двух других таблицах.
Итак, ВЫБЕРИТЕ все данные из объектов site_projects. Затем верните COUNT из site_project_members WHERE site_projects
. id
= site_project_members
. pid
, а также верните COUNT для site_project_tasks ГДЕ 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 Любой, кто может помочь? Очень ценится
Спасибо, Dan