2012-02-13 14 views
1

UNIXタイムスタンプを使用して、現在の日に参加している現在のイベントの数を取得するにはどうすればよいですか?たとえば、2月17日に2イベント、2月19日に1イベント各当日のイベントの合計数を取得する

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つの項目が互いに(2月17日)の同じ日に予定されているが、最後の項目が同じことを予定していない他のイベントで2月19日に次のとおりです。2012年には、このように行を返す必要があります日。

私はこの方法を試してみましたが、それは、これを返します。

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 

2つのUNIXのタイムスタンプがあります2月13日(月)12:00 AMから2月19日(日)11:59 PMまで、翌週計画のように。

次のイベントのその日にイベントがある曜日の各イベントの数を返すイベントの数を取得する方法を教えてください。

答えて

0

これはあなたを始めてくれるはずです。 2つのタイムスタンプ内の各event_idと、同じ日に開始する他のすべての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 
関連する問題