次のテーブルがあるとしますusers
。
id name
1 John
2 Mike
3 Max
そしてテーブルposts
id author_id date title
1 1 2014-12-12 Post 2
2 1 2014-12-10 Post 1
3 2 2014-10-01 Lorem ipsum
...and so on
そして、次のデータを含むクエリが必要です。
ユーザー名
先週のユーザーの投稿数
先月のユーザーの投稿数
個々のユーザーごとに行うことができます (次の例では ID 1 を使用)。
SELECT
`name`,
(SELECT COUNT(*) FROM `posts`
WHERE
`author` = 1 AND
UNIX_TIMESTAMP()-UNIX_TIMESTAMP(`date`) < 7*24*3600) AS `posts7`,
(SELECT COUNT(*) FROM `posts`
WHERE
`author` = 1 AND
UNIX_TIMESTAMP()-UNIX_TIMESTAMP(`date`) < 30*24*3600) AS `posts30`
FROM `users`
WHERE `id` = 1
内側と外側の SELECT 間でデータを交換できれば、MySQL は 1 つのクエリ内のすべてのユーザーに対してこれを行うことができると思います。私は間違った言葉を使っているかもしれませんが、ここにいる人々が私のニーズを理解して助けてくれることを本当に願っています.