Я сделал сайт для "ходячего вызова", в котором есть таблица, в которой пробегают мили.
Цель - 2105 миль (Ньюкасл, Великобритания - Стамбул).
На домашней странице у меня есть таблица лидеров, в которой в настоящее время показаны 5 команд, которые собрали больше миль.
Я использую следующий запрос для достижения этого:
SELECT
SUM(log.distance) AS l,
log.*,
team.*
FROM
team
RIGHT JOIN
log ON team.teamname = log.teamname
GROUP BY
log.teamname
ORDER BY
l DESC
Однако я хочу, чтобы эта таблица лидеров показала 5 команд, которые закончили сначала, а не тех, кто прошел дальше всего. т.е. команды, которые вначале достигли 2105 миль.
Текущий веб-сайт можно просмотреть здесь
Добавьте в таблицу нулевое поле completedDate
и заполните его, когда кто-то завершит гонку. Заказать по завершенной дате.
Невозможно было бы заказать тот, кто закончил сначала иначе.
Поскольку у вас есть поле timestamp, которое получает текущее время каждый раз, когда команда вводит количество пройденных миль, вы можете сделать следующее:
SELECT
SUM(log.distance) AS l,
MAX(log.timestamp) AS t,
log.*,
team.*
FROM
team
RIGHT JOIN
log ON team.teamname = log.teamname
GROUP BY
log.teamname
WHERE
l >= 2105
ORDER BY
t ASC
Имейте в виду, что это будет работать, только если вы не позволите команде добавить дополнительные мили после завершения заданного расстояния. Если они смогут добавить дополнительные мили после завершения задания, дайте мне знать, и я попробую найти другой запрос