2012-05-10 54 views
0

我有2個表客戶端和Notes,在notes表中我記錄了客戶端的所有活動。我試圖做的是查詢筆記表,以查找哪些客戶在過去30天內沒有任何活動。在查詢中使用Max()來查找表中的最近日期

在昨天晚上花了一個好藥水和今天早上我沒能找到一個工作解決方案..任何建議?

SELECT `c`.`ClientID` , `c`.`CompanyName` , MAX( `NtWhen`) 
FROM `clients` AS `c` 
JOIN `client-notes` AS `n` ON ( `c`.`ClientID` = `n`.`NtClient`) 
WHERE `NtText` = 'Viewed Client Details' 
AND MAX(`NtWhen`) < '2012-04-10' 
GROUP BY `NtClient` 
ORDER BY MAX(`NtWhen`) DESC 

回答

1

的基本原則是,你需要將你的筆記表由客戶端,然後過濾那些組(即使用HAVING)僅用於那些在最近的日期是前30天前:

SELECT NtClient 
FROM  `client-notes` 
GROUP BY NtClient 
HAVING MAX(NtWhen) < DATESUB(NOW(), 30) 

您可以與您clients表連接,你是之前,如果你需要的公司名稱等

+0

謝謝你,非常有幫助 –

+0

@An dyHughes:沒問題!僅供參考,你應該[接受答案](http://meta.stackexchange.com/a/5235)如果他們解決你的問題,並[upvote](http://stackoverflow.com/privileges/vote-up)他們,如果他們'有用或有幫助。 – eggyal

0
SELECT `c`.`ClientID` , `c`.`CompanyName` , MAX( `NtWhen`) 
    FROM `clients` AS `c` 
    JOIN `client-notes` AS `n` ON ( `c`.`ClientID` = `n`.`NtClient`) 
WHERE `NtText` = 'Viewed Client Details' 
GROUP BY `NtClient` 
HAVING MAX(`NtWhen`) < '2012-04-10' 
ORDER BY MAX(`NtWhen`) DESC; 
+0

謝謝,非常有幫助 –