2012-02-13 50 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