Общие > Базы данных
[mysql] Запрос с сортировкой
shred:
Имеем: таблица с участниками (id, nick) и таблица с результатами заездов этих участников (id, nick_id, time, action_date, где time - за какое время доехал, action_date - дата, когда это было).
Требуется: что-то вроде "Топ 10 ездаков", со строками вида "time | nick | action_date", nick\'и, конечно, повторяться не должны, сортировка по time, меньшее впереди.
Если пишем
select * from участниками у, результаты р
where у.id=р.nick_id
group by у.id
избавляемся от повторов ников, но и теряем нужную запись (с лучшим временем), вместо нее - произвольная.
Если писать group by р.time asc, у.id вылазят записи о всех заездах. В сущности, все ок, только не знаю как повторяющиеся ники убрать.
Вот если бы можно было сначала отсортировать, а потом с помощью group by у.id отстрелить дубли :) Но порядок group by, order by и т.д. строго определен...
Как быть?
madone:
Попробуй вставить ключевое слово DISTINCT
Меняздесьдавнонет:
сначала написал а потом только подумал.
прошу прощения.
Меняздесьдавнонет:
если запраршивать min(time), то время не пропадет.
shred:
--- Цитировать ---если запраршивать min(time), то время не пропадет.
--- Конец цитаты ---
Я так и делаю :) НО! Если при этом выводить и дату, то она не соответствует нику и результату заезда (ник, как ни странно, соответствует результату).
--- Цитировать ---Попробуй вставить ключевое слово DISTINCT
--- Конец цитаты ---
Пробовал, эффекта не добился. Может как-то не так пробовал, но вариант, вроде всего один.
ЗЫ. mysql v4.0.15
Навигация
Перейти к полной версии