У меня есть таблица рекордов MySQL для игры, которая показывает ежедневный рекорд для каждого из последних дней года. Сейчас я делаю цикл for for PHP и делаю отдельный запрос для каждого дня, но таблица становится слишком большой, чтобы сделать это, поэтому я хотел бы сжать ее в один простой оператор MySQL.
Вот мой новый запрос прямо сейчас (date_submitted - отметка времени):
SELECT date(date_submitted) as subDate, name, score FROM highScores WHERE date_submitted > "2009-07-16" GROUP BY subDate ORDER BY subDate DESC, score DESC LIMIT 10;
выход:
+------------+------------+--------+
| subDate | name | score |
+------------+------------+--------+
| 2010-07-18 | krissy | 959976 |
| 2010-07-10 | claire | 260261 |
| 2010-07-05 | krissy | 771416 |
| 2010-06-19 | krissy | 698031 |
| 2010-06-18 | otli | 264898 |
| 2010-06-15 | robbie | 82303 |
| 2010-06-01 | dad | 480469 |
| 2010-05-29 | vicente | 124149 |
| 2010-05-27 | dad | 564007 |
| 2010-05-26 | caleb | 502623 |
+------------+------------+--------+
Моя проблема в том, что когда он группировался по subDate, он получал наивысшую оценку за самую раннюю временную отметку того дня, как вы можете видеть в следующем запросе:
SELECT name, score, date_submitted FROM highScores WHERE date(date_submitted)='2010-06-15' GROUP BY name ORDER BY score DESC;
выход:
+--------+--------+---------------------+
| name | score | date_submitted |
+--------+--------+---------------------+
| john | 304095 | 2010-06-15 22:58:02 |
| april | 247126 | 2010-06-15 21:25:31 |
| orli | 166021 | 2010-06-15 21:25:31 |
| robbie | 82303 | 2010-06-15 11:38:39 |
+--------+--------+---------------------+
Как видите, бедный Джон должен был быть лидером на 2010-06-15 годы. Кто-нибудь может помочь? Надеюсь, это что-то очень простое, что я пропускаю. Я пытался использовать max (оценка) перед частью FROM в 1-м запросе, и это дало мне правильную оценку, но не перенесло имя.
Спасибо за любую помощь.