Получить общее количество событий на каждый текущий день - PullRequest
1 голос
/ 13 февраля 2012

Как вы можете получить число текущих событий, зачисленных в текущий день, с отметкой времени UNIX, например, есть 2 события 17 февраля 2012 года и 1 событие 19 февраля 2012 года. Должны быть возвращены строки, подобные этой:

Array 
(
    [0] => stdClass Object
        (
           [event_id] => 4
           [total_events] => 2
        )

    [1] => stdClass Object
        (
           [event_id] => 18
           [total_events] => 2
        )

    [2] => stdClass Object
        (
           [event_id] => 19
           [total_events] => 1
        )
)

Первые два элемента запланированы на один и тот же день друг друга (17 февраля), а последний элемент на 19 февраля, а другие события не запланированы на тот же день.

Я попробовал этот метод, но он возвращает это:

Array
(
    [0] => stdClass Object
        (
            [event_id] => 1
            [total_events] => 1
        )

    [1] => stdClass Object
        (
            [event_id] => 2
            [total_events] => 1
        )

    [2] => stdClass Object
        (
            [event_id] => 3
            [total_events] => 1
        )

)

Это следующий SQL, который я сделал до сих пор, без хорошего результата:

SELECT events.event_id,
       SUM(IF(DATE_FORMAT(FROM_UNIXTIME(events.event_starts), '%y %m %d') = DATE_FORMAT(FROM_UNIXTIME(events.event_ends), '%y %m %d'), 1, 0)) AS total_events

FROM
(
    scheduled_events events
)
WHERE ( events.event_starts >= 1328486400 AND events.event_ends <= 1329695940 )
GROUP BY events.event_id

Две метки времени UNIXнаходятся в диапазоне от понедельника 13 февраля 12:00 до воскресенья 19 февраля 23:59, как в схеме следующей недели.

Как получить количество событий, которое возвращает количество событий в каждый день неделикогда в этот день происходит событие следующего события.

1 Ответ

0 голосов
/ 15 апреля 2012

Это должно помочь вам начать.Он должен возвращать каждый event_id в пределах двух временных меток и COUNT всех других event_id, которые начинаются в тот же день

SELECT e1.event_id,
       COUNT(DISTINCT e2.event_id)
FROM   scheduled_events AS e1
   INNER JOIN scheduled_events AS e2
       ON  e1.event_id!=e2.event_id 
           AND DATE(FROM_UNIXTIME(e1.event_starts))=DATE(FROM_UNIXTIME(e2.event_starts))
WHERE ( e1.event_starts >= 1328486400 AND e1.event_ends <= 1329695940 )
GROUP BY e1.event_id
...