我有一个包含一组要执行的任务的表:
Task
ID Name
1 Washing Up
2 Hoovering
3 Dusting
用户可以将一个或多个注释添加到注释表中。每个注释都与一个任务相关联:
Note
ID ID_Task Completed(%) Date
11 1 25 05/07/2013 14:00
12 1 50 05/07/2013 14:30
13 1 75 05/07/2013 15:00
14 3 20 05/07/2013 16:00
15 3 60 05/07/2013 17:30
我想要一个查询,它将选择任务 ID、名称和它的完成百分比,如果没有任何注释,它应该为零。查询应返回:
ID Name Completed (%)
1 Washing Up 75
2 Hoovering 0
3 Dusting 60
我真的一直在为这个查询而苦苦挣扎,我读过这是一个“每组最大 n 个”类型的问题,其中有很多关于 SO 的示例,没有一个可以应用于我的案例(或者至少充分认识)。我的直觉是从在笔记表中找到每个任务的 MAX(Date) 开始:
SELECT ID_Task,
MAX(Date) AS Date
FROM
Note
GROUP BY
ID_Task
烦人的是,我不能只在上面的查询中添加“Complete %”,除非它包含在 GROUP 子句中。啊!我不知道如何跳过这个圈,以便以某种方式获取任务表行以及附加的列。这是我可怜的尝试,它失败了,因为它只返回带有注释的任务,然后在那里复制任务记录(每个注释一个,所以完全失败)。
SELECT Task.ID,
Task.Name,
Note.Complete
FROM
Task
JOIN
(SELECT ID_Task,
MAX(Date) AS Date
FROM
Note
GROUP BY
ID_Task) AS InnerNote
ON
Task.ID = InnerNote.ID_Task
JOIN
Note
ON
Task.ID = Note.ID_Task
任何人都可以帮助我吗?