2012-02-13 47 views
1

如何获取当天使用UNIX时间戳记录入的当前事件数量,例如,2012年2月17日有2个事件,2月19日有1个事件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 
     ) 
) 

前两个项目定于对方(2月17日)的同一天的最后一个项目是02月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时间戳范围从2月13日星期一凌晨12:00到2月19日星期日晚上11点59分,如下周计划。

如何检索一次事件的数量,该事件返回一天中某个事件发生在下一事件当天的每一天的事件数量。

回答

0

这应该让你开始。它应该返回两个时间戳内的每个event_id以及同一天开始的所有其他event_id的COUNT

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