SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.03.2014 13:09:13

AlexM600
Участник
Зарегистрирован: 27.03.2014
Сообщений: 4

Выборка последних записей за период по каждой категории

Может задача тривиальная, но моего ума не хватает. Подскажите как?
Таблица "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

Неактивен

 

#2 27.03.2014 13:16:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка последних записей за период по каждой категории

первый способ из http://sqlinfo.ru/articles/info/18.html

Неактивен

 

#3 27.03.2014 13:26:21

AlexM600
Участник
Зарегистрирован: 27.03.2014
Сообщений: 4

Re: Выборка последних записей за период по каждой категории

Большое спасибо!
А почему именно первый способ, а не второй? В моем случае тип поля именно datetime как описывается во втором способе.

Неактивен

 

#4 27.03.2014 13:29:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка последних записей за период по каждой категории

Второй требует полный скан таблицы и необходим для случая, когда не применим первый.

Неактивен

 

#5 27.03.2014 13:42:19

AlexM600
Участник
Зарегистрирован: 27.03.2014
Сообщений: 4

Re: Выборка последних записей за период по каждой категории

Может ещё подскажете в какое место воткнуть условия, чтобы попали только последние записи где Field='status' и условия по началу и концу периода?

Неактивен

 

#6 27.03.2014 13:47:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка последних записей за период по каждой категории

в подзапрос

Неактивен

 

#7 27.03.2014 13:56:44

AlexM600
Участник
Зарегистрирован: 27.03.2014
Сообщений: 4

Re: Выборка последних записей за период по каждой категории

я в SQL полный профан, тем более в терминологии sad
что в данном случае - подзапрос?

Неактивен

 

#8 27.03.2014 14:31:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка последних записей за период по каждой категории

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`;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson