2012-02-16 37 views
1

ここに詰まっていて、修正方法がわかりません。サブクエリでエラーが発生しました

私は、ユーザーID、ユーザーグレード、およびそのユーザーが投票した日付(3フィールド)を持つdbテーブルを持っています。

今日の平均成績が最も高いユーザーを読み込もうとしていますが、1に制限されています。 しかし、問題は、5票以上持っているユーザーしか読まないということです。

私のクエリは次のように見えるが、イムは、エラーを取得:

SELECT 
    idusers, 
    AVG(votes) AS Grade 
    FROM rank 
    WHERE (data = '{$dbDate}') 
    AND ((SELECT count(ID) + 1 FROM rank) AS tmpcount WHERE tmpcount>4) 
    GROUP BY idusers 
    ORDER BY Grade DESC 
    LIMIT 1 

をこのクエリは[OK]を働いているtmpcount>4句を指定しないが、私は、IDの数をカウントする必要があります。

+0

あなたの質問のためのより良いタイトルを選択してください。 –

答えて

7

あなたは(SUMMINMAXAVG、...)などCOUNTとして集計値に設定された結果をフィルタリングするためにHAVINGを使用する必要があります。

SELECT idusers, AVG(votes) AS Grade 
FROM rank 
WHERE (data = '{$dbDate}') 
GROUP BY idusers 
HAVING COUNT(*) > 4 
ORDER BY Grade DESC 
LIMIT 1 
+0

ありがとう@knittlそれは仕事です... – user994461

関連する問題