Не получается запрос - просьба помочь
От: LowCoder  
Дата: 25.06.10 07:47
Оценка:
Прошу помочь вот с каким вопросом. Никак не могу построить SQL запрос в MySQL (хотя мне кажется конкретная платформа здесь не важна). Есть таблица с полями

id,
datetime,
value1 int,
value2 int,
value3 int


Каждый день в БД вносятся данные в хронологическом порядке (хронология по времени). На другой день тоже самое — например
1, 2010-05-10 12:03, 10, 20, 30
2, 2010-05-10 13:50, 15, 16, 45
3, 2010-05-10 18:15, 25, 48, 25
4, 2010-05-11 10:07, 09, 56, 32
5, 2010-05-11 14:20, 92, 89, 78
6, 2010-05-12 11:02, 14, 65, 38
7, 2010-05-12 11:05, 05, 11, 44


Мне нужно сделать выборку следующего вида
2010-05-10 18:15, 25, 48, 25
2010-05-11 14:20, 92, 89, 78
2010-05-12 11:05, 05, 11, 44

т.е получить последнюю запись за каждый день за выбранный интервал. Записей внутри дян может быть много.

Запросы типа

SELECT max(datatime), value1, value2, value3 FROM tbl_test;

SELECT max(datatime), value1, value2, value3 FROM tbl_test GROUP BY date(datetime);

SELECT max(datatime), value1, value2, value3 FROM tbl_test GROUP BY date(datetime) ORDER BY datetime DESC;


не дают желаемого результата (и это расстраивает) . Возвращается вот что


          
             |------ самое поздее время в рамках одного дня 
             | 
2010-05-10<--| 18:15, 10, 20, 30 <-- НО! данные из ПЕРВОЙ записи внутри дня... 
2010-05-11 14:20, 09, 56, 32
2010-05-12 11:05, 11, 11, 44


Т.е нужно что то типа сортировки в обратом пордки ВНУТРИ групп (внутридневных групп) либо что типа функции last — котрая возвращала бы последнюю запись во внутредневном наборе.
У меня есть ощушение что это сделать можно одним запросом но видимо меня чета заклинило.
Буду очень признателен за ответ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.