2011-08-09 175 views
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天内的所有项目,即使最新的竣工日期是超出。那有意义吗?我需要查询才能根据最近的完成日期返回项目。我不知道该怎么解释。请让我知道,如果我可以澄清。

回答

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