У меня есть таблица игроков:
id points last_online
1 320 2011-07-10
2 1025 2011-07-05
3 750 2011-04-25
4 5000 2011-07-10
5 525 2011-05-01
Для того, чтобы получить рейтинг игрока (на основе очков), у меня есть следующий выбор MySQL:
SELECT Player.*,
( SELECT COUNT(*)
FROM players Player_i
WHERE (Player_i.points, Player_i.id) >= (Player.points, Player.id)
) AS rank
FROM players AS Player
WHERE Player.id = 1
Это работаетхорошо.Итак, рейтинг для идентификатора игрока 1 равен 5.
Но я хочу рассмотреть только игроков, которые были онлайн в последний раз за последние 30 дней (учитывая, что сегодня 2011-07-10).Таким образом, ранг для ID игрока 1 будет 3, потому что игроки 3 и 5 были исключены из ранга.
Есть идеи, как мне это сделать?