Всем добрый день!
Ситуация следующая. Имею таблицу с данными:
Хочу сделать следующее:
1. Сделать выборку по данных по заданному `elem_id`
2. Сгруппировать их по полю `state` следующим образом:
- например, у первой записи `state` = 5
- все записи со `state`=5, идущие после этой и до записи с другой `state` (равной 6, например) - отбрасываются
- и так для всех `state`: если после `state`=6 будут идти записи со `state`=5 - для них будет уже другая группировка, отдельная от предыдущей
В результате, для полей с `elem_id`=1 получается такая таблица:
Для полей с `elem_id`=2 таблица следующая:
Буду благодарен советам, в какую сторону копать, с какого бока заходить и что почитать.
Дамп исходной таблицы и структуру прикладываю:
--
-- Структура таблицы `test`
--
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`elem_id` int(11) NOT NULL,
`state` int(11) NOT NULL,
`time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Дамп данных таблицы `test`
--
INSERT INTO `test` (`id`, `elem_id`, `state`, `time`) VALUES
(1, 1, 5, '2013-12-20 00:01:00'),
(2, 1, 5, '2013-12-20 00:02:00'),
(3, 2, 1, '2013-12-20 00:03:00'),
(4, 1, 5, '2013-12-20 00:04:00'),
(5, 1, 6, '2013-12-20 00:05:00'),
(6, 2, 1, '2013-12-20 00:06:00'),
(7, 2, 2, '2013-12-20 00:07:00'),
(8, 1, 5, '2013-12-20 00:08:00'),
(9, 1, 5, '2013-12-20 00:09:00'),
(10, 2, 1, '2013-12-20 00:10:00');