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

Discussion in 'PHP' started by Solker, 18 Feb 2010.

  1. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    В таблице `online` два столбца, `id` и `time`. В `time` находится timestamp unix и в `id` соответственно id этой записи в auto inceremnt.

    Code:
    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...
    ----
     
    #1 Solker, 18 Feb 2010
    Last edited: 18 Feb 2010