0

MySQL クエリ:

SELECT  c.day,
        COUNT(site_id)
FROM    calendar c
        LEFT JOIN
        (
            SELECT *
            FROM   visitors
            WHERE  site_id = 16
        ) d ON  DAYOFMONTH(d.created) = c.day
WHERE c.day BETWEEN DAYOFMONTH('2012-10-01') AND DAYOFMONTH('2012-10-31')
GROUP BY c.day
ORDER BY c.day

マイ テーブル

Calendar

id  | day
---------
1   | 1
2   | 2
3   | 3
...
31  | 31

Visitors

id  | site_id | created
-----------------------------------
1   | 16      | 2012-10-18 11:14:39
2   | 16      | 2012-10-18 11:15:17
3   | 11      | 2012-10-18 11:49:14
4   | 11      | 2012-10-18 11:49:43
5   | 16      | 2012-10-19 11:54:37
6   | 1       | 2012-10-19 05:56:31
7   | 2       | 2012-10-19 05:57:56

上記のクエリを使用して、サイトへの訪問の毎日の結果を取得しました。クエリは私の質問 here を解決しました。

結果:

day | COUNT(*)
-------------
1   |       0
2   |       0
3   |       0
....
18  |       2
19  |       1
...
31  |       0

dayただし、現在、グラフ作成に必要なUNIX_TIMESTAMP からの取得に問題があります。

c.dayクエリから取得するにはどうすればよいですか?

4

1 に答える 1

0

編集:

SELECT
  UNIX_TIMESTAMP('2012-10-01' + INTERVAL c.day - 1 DAY) unix_ts_day,
  COUNT(v.site_id)
FROM
  calendar c
LEFT JOIN (
  SELECT * FROM visitors
    WHERE site_id = 16 AND DATE(created) BETWEEN '2012-10-01' AND '2012-10-31'
  ) v
  ON DAYOFMONTH(v.created) = c.day
GROUP BY
  unix_ts_day
于 2012-10-22T06:05:09.660 に答える