私はテーブルを持ってusers
おりposts
、さまざまな期間のユーザーによる投稿の数を取得したいと思います。
users: id, username
1, bob
2, sam
posts: id, user_id, created (datetime)
1, 1, 2012-12-01 00:00:00
2, 1, 2012-12-30 00:01:00
3, 1, 2012-12-30 01:00:00
4, 2, 2012-12-12 00:00:00
5, 2, 2012-12-30 01:00:00
hour
過去とday
月の投稿を数えたいです。これは1つのクエリで実行できますか?
クエリが実行された日付2012-12-30 01:30:00
を次のようにするとします。
User.id | hour | day | month
1 | 1 | 2 | 3
2 | 1 | 1 | 2
私は次のようなことを試みましたが、数字が間違っています。
SELECT
User.id,
COUNT(Hour.id) as hour,
COUNT(Day.id) as day,
COUNT(Month.id) as month
FROM user as User
LEFT JOIN posts as Hour ON
(posts.user_id = user.id AND posts.created >= '2012-12-30 00:30:00')
LEFT JOIN posts as Day ON
(posts.user_id = user.id AND posts.created >= '2012-12-29 01:30:00')
LEFT JOIN posts as Month ON
(posts.user_id = user.id AND posts.created >= '2012-11-30 01:30:00')
私は次のような奇妙な数字になってしまいます
User.id | hour | day | month
1 | 12 | 12 | 12
2 | - | 2 | 2