2 つのテーブルがあり、1 つはスコアを含み、もう 1 つはゲームのリストを含みます。ゲームにはさまざまな種類のハイスコアがあります。たとえば、ゴルフ ゲームではスコアが最も低い人が判断されます。
特定のユーザーのハイスコアを他のユーザーと比較してリストを作成しようとしています (ハイスコアを最低スコアと見なすゲームを含む)。
私の古いクエリは、すべてのスコアが MAX スコアであると仮定していましたが、ゲームのスコア タイプが「低」かどうかを確認できるようにする必要があります。CASEを使えば解決できるとのことですが、ゲームテーブルにたどり着こうとして壁にぶち当たります。
SELECT s.game_id、fp.score
FROM game_scores s
INNER JOIN ゲーム g ON s.game_id = g.id
内部結合 (
選択する
場合
WHEN g.score_type = low THEN MIN(スコア)
WHEN g.score_type = high THEN MAX(スコア)
END as score, game_id
FROM game_scores
GROUP BY game_id
) fp ON s.game_id = fp.game_id AND s.score = fp.score
WHERE s.user_id = 1