この質問がまだ尋ねられているかどうかはわかりませんが、より良い言葉で表現する方法がわかりません:)
ゲーム結果の表があります。(リーダーボードの場合) 上位 10 の結果を返す必要がありますが、結果はプレーヤーごとに最高のゲームを返す必要があり、プレーヤーを複製する必要はありません (したがって、各プレーヤーの最高スコアを探しており、それに基づいて上位 10 人のプレーヤーは言うまでもありません)スコアで 1 位と 3 位の場合は 2 回表示します)。
現在使用しているSQLは次のとおりです。
SELECT
`games`.`score`,
CONCAT(`users`.`full_name`) AS `name`,
`users`.`facebook_id`
FROM
`games`,
`users`
WHERE
`games`.`user_id`=`users`.`id`
AND `users`.`id` IN ('user ids goes here')
AND `games`.`status`=2
ORDER BY
`games`.`score` DESC
LIMIT 10";
これは単一のクエリで実行できますか、または返された配列で作業し、そこから目的の結果を作成するのが最善でしょうか?
アップデート:
分かりやすく説明すると、次のような結果が得られたとします。
Jack - 300 points
Jill - 280 points
Gareth - 250 points
Jack - 240 points (this is the same jack)
Peter - 230 points
....
すべてのゲームから、最高スコアに基づいて上位 10 人のプレーヤーを返したいので、必ずしも 10 の結果ではありませんが、次の結果を返す結果を探しています。
Jack - 300 points
Jill - 280 points
Gareth - 250 points
Peter - 230 points
したがって、2 番目のジャックは、スコアが高いだけで既にリストに含まれているため、削除されます。
これが役立つことを願っています:)