現在、次のSQLステートメントがあります
MySQL クエリ:
SELECT
c.day,
COUNT(*)
FROM
calendar c
JOIN
visitors d
ON DAYOFMONTH(d.created) = c.day
WHERE
c.day BETWEEN DAYOFMONTH('2012-10-01') AND DAYOFMONTH('2012-10-31')
AND
site_id = 16
GROUP BY
DAYOFMONTH(d.created)
ORDER BY
DAYOFMONTH(d.created)
マイ テーブル:
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
この回答で規定されているようにテーブル、カレンダーを作成しましたが、それでも同じ情報が得られるようです。データがある日付のみを取得しています。
day | COUNT(*)
---------------------
18 | 2
19 | 1
0
データのない日付も取得する必要があります。
アップデート:
I tried this:
SELECT *
FROM calendar c
LEFT JOIN visitors d
ON DAYOFMONTH(d.created) = c.day
と
SELECT *
FROM calendar c
LEFT JOIN visitors d
ON DAYOFMONTH(d.created) = c.day
WHERE site_id = 16
私site_id = 16
は確かに結果を殺しているものであることを確認できます.