У меня есть 3 таблицы с именами USER
, SCORE
и LEVEL
, как указано ниже.
USER
+----+---------------+
| id | name |
+----+---------------+
| 1 | Mr Alexander |
| 2 | Ms. Duma |
+----+---------------+
LEVEL
+----+------+
|id | seq |
+----+------+
| 1 | 1 |
| 2 | 2 |
+---+-------+
SCORE
+----+---------+------------+-------+
|id | user_id | level_id | score |
+----+---------+------------+-------+
| 1 | 1 |1 |3 |
| 2 | 1 |2 |2 |
| 3 | 1 |1 |4 |
| 4 | 1 |1 |2 |
| 5 | 2 |1 |3 |
+---+----------+------------+-------+
Из этих таблиц я пытаюсь подготовить табло, в котором каждый пользователь будет организовано на основе их уровня и оценки. И для каждого пользователя будет показан только самый высокий уровень и соответствующий наивысший балл на этом уровне.
Я написал для этой цели запрос JOIN
, как показано ниже.
SELECT user.name, MAX(level.seq) as level, MAX(score.score) as score FROM
api_score score
JOIN api_level level ON level.id = score.level_id
JOIN api_user user ON user.id = score.user_id
group by user.id, level.seq
ORDER BY level DESC, score DESC;
Но, этот запрос возвращает наивысший балл всех уровней на каждом уровне. Как я могу изменить этот запрос, чтобы для каждого пользователя отображался только самый высокий уровень?