У меня возникают некоторые проблемы с MySQL и выбор количества столбцов из объединенной таблицы. У меня такое чувство, что для запроса строк, которые я хотел бы объединить, вместо того, чтобы делать это в моем основном месте, где требуется condiutional, потребуется выполнить операцию подвыбора.Проблемы с подсчетом соединенных строк с условным
Я пытаюсь выбрать список проектов, которые связаны с определенным пользователем. Я также хотел бы включить количество задач, назначенных этому проекту и этому пользователю (но только для определенного статуса).
У меня он работает почти - это значит совсем не так. Он будет возвращать только id проекта id 1, а не id 2. Это из-за моего 'tasks.status < 9' where where.
Любая помощь будет отличной. Дайте мне знать, если мне нужно что-то объяснить.
+-------------------------+
| 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 |
+--------------+--------------+--------+
Бинго, спасибо человеку. –