我已经使用PHP解决了这个问题,但是我知道如果我可以为它做一个查询,速度会更快。我有以下2个表格。仅从连接表中选择第一条记录,其中条件为
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年1月1日12:00:00的记录,而不是2015年1月2日12:00:00? – HaveNoDisplayName
您必须使用MAX运算符获取最近的任务,然后使用JOIN将任务与项目合并。使用WHERE选择状态1 OR 2 – Darkwing