Задача вывести записи за последние 3 дня (точнее последние 3 даты) из таблицы с полями id | text | date (дата записи). содержание может быть таким: id | text | date (дата записи). 1 | text1 | 01-01-2012 2 | text2 | 01-01-2012 3 | text3 | 10-01-2012 4 | text4 | 10-01-2012 5 | text5 | 15-01-2012 6 | text6 | 15-01-2012 7 | text7 | 20-01-2012 То есть надо вывести text3 ... text7. Я придумал вариант в два запроса: SELECT date GROUP BY date ORDER BY date DESC LIMIT 3. Получаю три последних даты. Потом вторым запросом выбираю записи для каждой даты. Мне кажется, можно одним запросом обойтись, но не знаю как!
если даты повторяются, если возможны "дыры" в последовательности дат, то как ты описал, так оно и делается.
Можно буквально самую малость оптимизировать. В итоге нам нужны записи с датой >= третьей с конца дате (LIMIT 3,1). Т.е. нам не надо буквально получить три даты и потом совать их в следующий запрос. Надо найти 1 дату и потом сравнивать ">="