2011-08-09 172 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