0

クライアントとメモの 2 つのテーブルがあり、メモ テーブルにはクライアントのすべてのアクティビティを記録します。私がやろうとしているのは、notes テーブルにクエリを実行して、過去 30 日間にアクティビティがなかったクライアントを見つけることです。

昨夜と今朝の良いポーションを過ごした後、私は有効な解決策を見つけることができませんでした.. 何か提案はありますか?

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 
4

2 に答える 2

1

HAVING基本的な原則は、クライアントごとにメモテーブルをグループ化し、最新の日付が30日前のもののみを対象にそれらのグループをフィルタリングする(つまり、使用する)必要があるということです。

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

clients会社名などが必要な場合は、以前と同じようにテーブルに参加できます。

于 2012-05-10T13:49:04.090 に答える
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;
于 2012-05-10T13:49:08.787 に答える