У меня есть таблица рекордов MySQL для игры, которая показывает ежедневный рекорд для каждого из последних дней года. Прямо сейчас я выполняю PHP-цикл for и делаю отдельный запрос для каждого дня, но таблица становится слишком большой для этого, поэтому я хотел бы сжать ее в один простой оператор 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 |
+--------+--------+---------------------+
Как видите, бедный Джон должен был быть лидером на 15.06.2010. Кто-нибудь может помочь? Надеюсь, это что-то очень простое, что я упускаю из виду. Я попытался использовать max(score) перед частью FROM в 1-м запросе, и это дало мне правильную оценку, но не перенесло имя.
Спасибо за любую помощь.