Задавайте вопросы, мы ответим
Вы не зашли.
Может задача тривиальная, но моего ума не хватает. Подскажите как?
Таблица "history"
Request_id, Date, Field, New_Value,Old_Value
3, '2014-01-01 00:02:00', 'status',30, 40
1, '2014-01-01 00:12:10', 'status',80, 10
2, '2014-01-01 00:13:00', 'status',10, 50
1, '2014-01-01 00:13:10', 'status',90, 80
2, '2014-01-02 00:00:00', 'status',80, 10
Задача выдать список последних (по дате) записей по каждому Request_id на определенный период, например с 2014-01-01 по 2014-02-01
т.е. на выходе должно получиться
3, '2014-01-01 00:02:00', 'status',30, 40
1, '2014-01-01 00:13:10', 'status',90, 80
2, '2014-01-02 00:00:00', 'status',80, 10
Неактивен
первый способ из http://sqlinfo.ru/articles/info/18.html
Неактивен
Большое спасибо!
А почему именно первый способ, а не второй? В моем случае тип поля именно datetime как описывается во втором способе.
Неактивен
Второй требует полный скан таблицы и необходим для случая, когда не применим первый.
Неактивен
Может ещё подскажете в какое место воткнуть условия, чтобы попали только последние записи где Field='status' и условия по началу и концу периода?
Неактивен
в подзапрос
Неактивен
я в SQL полный профан, тем более в терминологии
что в данном случае - подзапрос?
Неактивен
SELECT t.`user_id`, t.`post`, t.`time`
FROM `test_table` t JOIN
(SELECT `user_id`, max(`time`) as `mtime` FROM WHERE тут ваши условия `test_table` GROUP BY `user_id`) as t1
ON t.`user_id`= t1.`user_id` AND t.`time` = t1.`mtime`;
Неактивен