PDA

Просмотр полной версии : Вывести данные из таблицы MySQL в нужном формате


Solker
18.02.2010, 03:36
В таблице `online` два столбца, `id` и `time`. В `time` находится timestamp unix и в `id` соответственно id этой записи в auto inceremnt.

create table `online` (
`id` double ,
`time` varchar (30)
);
insert into `online` (`id`, `time`) values('2','1265925540');
insert into `online` (`id`, `time`) values('3','1265995021');
insert into `online` (`id`, `time`) values('4','1265995080');
insert into `online` (`id`, `time`) values('5','1265995140');
insert into `online` (`id`, `time`) values('6','1265995201');
insert into `online` (`id`, `time`) values('7','1265995260');
insert into `online` (`id`, `time`) values('8','1265995321');
insert into `online` (`id`, `time`) values('9','1265995380');
insert into `online` (`id`, `time`) values('10','1265995440');
insert into `online` (`id`, `time`) values('11','1265995500');
insert into `online` (`id`, `time`) values('12','1265995560');
insert into `online` (`id`, `time`) values('13','1265995620');
insert into `online` (`id`, `time`) values('14','1265995680');
insert into `online` (`id`, `time`) values('15','1265995740');
insert into `online` (`id`, `time`) values('16','1265995800');
insert into `online` (`id`, `time`) values('17','1265995863');
insert into `online` (`id`, `time`) values('18','1266009660');
insert into `online` (`id`, `time`) values('19','1266158400');
insert into `online` (`id`, `time`) values('20','1266158460');
insert into `online` (`id`, `time`) values('21','1266158520');
insert into `online` (`id`, `time`) values('22','1266158580');
insert into `online` (`id`, `time`) values('23','1266158640');
insert into `online` (`id`, `time`) values('24','1266158703');
insert into `online` (`id`, `time`) values('25','1266158760');
insert into `online` (`id`, `time`) values('26','1266158820');
insert into `online` (`id`, `time`) values('27','1266158880');
insert into `online` (`id`, `time`) values('28','1266158940');
insert into `online` (`id`, `time`) values('29','1266159000');
insert into `online` (`id`, `time`) values('30','1266159060');
insert into `online` (`id`, `time`) values('31','1266159120');
insert into `online` (`id`, `time`) values('32','1266159180');
insert into `online` (`id`, `time`) values('33','1266159240');
insert into `online` (`id`, `time`) values('34','1266186120');
insert into `online` (`id`, `time`) values('35','1266269100');
insert into `online` (`id`, `time`) values('36','1266447840');


Задача:
1. Если промежутки между timestamp меньше одной минуты то группировать их в промежуток времени.
2. Собственно вывести все это дело следующим образом.

----
2 февраля
* 15:30
* 15:33 (разница между этими штампами была более одной минуты, поэтому они идут отдельно друг от друга)
* 21:40 - 21:44 (тут мы сгруппировали, т.к. разница между штампами была меньше одной секунды, следовательно мы сгруппировали 4 штампа)

1 февраля
* 11:02 - 11:15
* 12:16 - 12:32

28 января
* 14:00

etc..
----

3. Возникает вопрос, что делать если допустим с 1 на 2 ферваля штамп.
Значит надо создавать промежуточную запись между 1 и 2 февраля.

----
2 февраля
* 15:30
* 21:40 - 21:44

1-2 февраля
* 23:45 - 2:02

1 февераля
* 11:02 - 11:15
* 12:16 - 12:32

etc...
----