0

我有一个跟踪间隔任务完成的表。例如,a 项必须每 7 天完成一次,b 项必须每 1 天完成一次,依此类推。该表在插入时记录“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 天的所有项目,即使最后的完成日期超过了该日期。那有意义吗?我需要查询仅根据最新完成日期返回项目。我不知道该怎么解释。如果我能澄清,请告诉我。

4

1 回答 1

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
于 2011-08-09T08:27:38.623 回答