ユーザーのゲームのスコアランクを見つけるためのクエリを作成しようとしています。ユーザーIDを取得して、そのユーザーの相対ランキングを他のユーザーのスコアに戻すために必要です。ユーザーとゲームテーブルがあります。ゲームテーブルには、1対多の関係を持つuserIdフィールドがあります。
サンプルテーブル:
ユーザー:
id freebee
1 10
2 13ゲーム:
userIdスコア
1 15
1 20
2 10
1 15
$ id 1をこの関数に渡すと、値1が返されます。これは、ユーザー1が現在最高のスコアを持っているためです。同様に、ユーザー2は2を返します。
現在、これは私が持っているものです:
SELECT outerU.id, (
SELECT COUNT( * )
FROM users userI, games gameI
WHERE userI.id = gameI.userId
AND userO.id = gameO.userId
AND (
userI.freebee + SUM(gameI.score)
) >= ( userO.freebee + SUM(gameO.score) )
) AS rank
FROM users userO,
games gameO
WHERE id = $id
これにより、「グループ関数の無効な使用」エラーが発生します。何か案は?