Выбор нескольких записей с максимальной датой в MySQL - PullRequest
0 голосов
/ 15 июля 2011

Это последний: один подзапрос, чтобы выбрать все записи до указанной даты, которые соответствуют моим критериям, и затем попытаться сгруппировать результаты по идентификатору пользователя и упорядочить по рангу

Похоже, это не сработало.Обратите внимание, что в одном звании может быть несколько человек.

SELECT *
  FROM (SELECT users.userid as userid,
               users.name as name,
               leagues.league as league,
               leagues.datestamp AS datestamp,
               ranking.ranking as ranking,
               user_profiles.profile_pic as profile_pic,
               user_profiles.team as team
          FROM users
     LEFT JOIN leagues ON users.userid = leagues.userid
     LEFT JOIN ranking ON users.userid = ranking.userid
     LEFT JOIN user_profiles ON users.userid=user_profiles.userid
         WHERE (leagues.datestamp <= '{$date}' 
           AND leagues.ladder = '3'  
           AND ranking.ladder = '3')
      ORDER BY datestamp DESC) as t1
GROUP BY userid
ORDER BY ranking

1 Ответ

1 голос
/ 15 июля 2011

Вы пробовали простой подзапрос?

SELECT users.userid as userid,
       users.name as name,
       leagues.league as league,
       leagues.datestamp AS datestamp,
       ranking.ranking as ranking,
       user_profiles.profile_pic as profile_pic,
       user_profiles.team as team
FROM   users
LEFT JOIN leagues ON users.userid = leagues.userid
LEFT JOIN ranking ON users.userid = ranking.userid
LEFT JOIN user_profiles ON users.userid=user_profiles.userid
WHERE  leagues.datestamp = (
    SELECT MAX(datestamp)
    FROM   leagues
    WHERE  leagues.ladder = '3'
      AND  leagues.datestamp <= '{$date}'
)
  AND  leagues.ladder = '3'  
  AND  ranking.ladder = '3'
ORDER BY ranking
...