У меня возникли некоторые проблемы с MySQL и при выборе числа столбцов из объединенной таблицы. У меня такое чувство, что для получения строк, к которым я хотел бы присоединиться, мне потребуется оператор sub-select вместо того, чтобы делать это в моем основном, где это условно.
Я пытаюсь выбрать список проектов, которые связаны с определенным пользователем. Я также хотел бы включить количество задач, которые назначены этому проекту и этому пользователю (но только те, которые имеют определенный статус).
У меня это работает почти - это значит, совсем нет. Он будет возвращать только идентификатор проекта 1, а не идентификатор 2. Это из-за моего условия «tasks.status <9» where. </p>
Любая помощь будет великолепна. Дайте мне знать, если мне нужно что-то объяснить.
+-------------------------+
| projects_to_users |
+-----------+-------------+
+ user_id | project_id |
+-----------+-------------+
+ 1 | 1 |
+-----------+-------------+
+ 1 | 2 |
+-----------+-------------+
+-------------------------+
| projects |
+--------------+----------+
+ project_id | name |
+--------------+----------+
+ 1 | Foo |
+--------------+----------+
+ 2 | Bar |
+--------------+----------+
+------------------------------------------------+
| tasks |
+-----------+--------------+----------+----------+
+ task_id | project_id | status | name |
+-----------+--------------+----------+----------+
+ 1 | 1 | 1 | Do it |
+-----------+--------------+----------+----------+
+ 2 | 1 | 1 | Do itt |
+-----------+--------------+----------+----------+
+ 3 | 1 | 9 | Do not |
+-----------+--------------+----------+----------+
SELECT count( tasks.task_id ) AS task_count, projects.*
FROM (projects)
LEFT JOIN tasks ON tasks.project_id = projects.project_id
LEFT JOIN projects_to_users ON projects.project_id=projects_to_users.project_id
WHERE tasks.status<9
AND tasks.assigned_user_id = '1'
AND projects_to_users.user_id = '1'
GROUP BY projects.project_id
RETURNS:
+--------------+--------------+--------+
+ task_count | project_id | name |
+--------------+--------------+--------+
+ 2 | 1 | Foo |
+--------------+--------------+--------+
SHOULD RETURN:
+--------------+--------------+--------+
+ task_count | project_id | name |
+--------------+--------------+--------+
+ 2 | 1 | Foo |
+--------------+--------------+--------+
+ 0 | 2 | Bar |
+--------------+--------------+--------+