我有一个跟踪间隔任务完成情况的表。例如,项目a必须每7天完成一次,项目b每1天完成一次,依此类推。该表记录了insert上的“nextDue”值。我需要一个查询,它只会返回到期后3天内的最新“nextDue”日期。这就是我现在所拥有的:
SELECT items.id, items.shortDescription, recs.nextDue, sup.name
FROM lut_ResponsibleParties sup INNER JOIN(
rec_controlCompletion recs INNER JOIN lut_controlItems items
ON recs.controlItem = items.id)
ON items.responsiblePerson = sup.id
WHERE datediff("d",Now(),recs.nextDue) <= 3
这是关闭的,除非它返回所有小于或等于3天的项目,即使最近的完成日期超出了该数量。那有意义吗?我需要查询只根据最新的完成日期返回项目。我不知道怎么解释。如果我能澄清,请告诉我。
答案 0 :(得分:0)
我想我在这个乱七八糟的混乱中找到了它:
SELECT names.shortDescription, names.latestDue, sup.firstName & " " & sup.lastName as fullName
FROM lut_responsibleParties sup INNER JOIN
(SELECT items.shortDescription, max.latestDue, items.responsiblePerson
FROM lut_controlItems items INNER JOIN
(SELECT recs.controlItem, max(recs.nextDue) as latestDue
FROM rec_controlCompletion recs
GROUP BY recs.controlItem) max ON items.id = max.controlItem) names ON sup.id = names.responsiblePerson
WHERE datediff("d",now(),names.latestDue) <= 3
ORDER BY names.latestDue