2011-08-15 8 views
0

多くのMySQL文を1つに最適化しようとしていますが、問題が発生しています。Min、Max、Group By、DateDiff

MySQLのクエリ:

SELECT companyid, COUNT(*) AS total 
    FROM timesheet 
    WHERE userId='1' 
    AND DATEDIFF(MIN(startDate), MAX(endDate)) <= 77 
GROUP BY companyid 
    HAVING total = 11 

私が何をしようとしているが、正確に11のレコードが存在し、最初と最後のレコードは、互いの11週間以内に作成されたすべての企業を選択しています。私が得るエラーは "グループ機能の無効な使用"です。

これはMIN(), MAX()DATEDIFF()の部分と関係がありますが、私の人生のためには分かりません!

+0

クエリに循環ロジックがあります。 :) –

答えて

2

集約関数は、WHERE節ではなくHAVING節にある必要があります。 (例:DATEDIFF(MIN(startDate), MAX(endDate)) <= 77条件)

グループ化されたレコードに適用され、グループ化される前に個々のレコードに適用されるものと考えてください。