Я работал с этой проблемой с помощью PHP, но я знаю, что это будет быстрее, если я могу сделать для нее один запрос. У меня есть следующие 2 таблицы.Выбор первой записи только из таблицы соединений с условием where
projects:
+------------+--------------+
| project_id | project_name |
+------------+--------------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+------------+--------------+
tasks:
+------------+------------+-------------+---------------------+
| project_id | task_id | task_status | task_due_timestamp |
+------------+------------+-------------+---------------------+
| 1 | 1 | 1 | 2015-01-01 12:00:00 |
| 1 | 2 | 2 | 2015-01-02 12:00:00 |
| 2 | 3 | 3 | 2015-01-03 12:00:00 |
| 3 | 4 | 1 | 2015-01-04 12:00:00 |
+------------+------------+-------------+---------------------+
Мне нужен запрос, который будет выбрать ВСЕ проекты со связанной с ними задачей, имеющей статус 1 или 2. И задача выбирает должна быть самым последним. См. Таблицу ниже.
records after query:
+------------+--------------+------------+-------------+---------------------+
| project_id | project_name | task_id | task_status | task_due_timestamp |
+------------+--------------+------------+-------------+---------------------+
| 1 | a | 1 | 1 | 2015-01-01 12:00:00 |
| 2 | b | null | null | null |
| 3 | c | 3 | 3 | 2015-01-01 12:00:00 |
| 4 | d | null | null | null |
+------------+--------------+------------+-------------+---------------------+
Как видите, проект 2 не должен иметь задачу, так как состояние задачи равно 2. И проект 4 не имеет проектов. В проекте 1 есть 2 задачи, но самый ранний - за один день.
Любая помощь была бы принята с благодарностью.
как вы получаете 2015-01-01 12:00:00 запись вместо 2015-01-02 12:00:00? – HaveNoDisplayName
Вы должны использовать оператор MAX для получения самой последней задачи, а затем присоединиться к объединению задач с проектами. Используйте WHERE для выбора статуса 1 ИЛИ 2 – Darkwing