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