0

次のテーブルがあるとします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 つのクエリ内のすべてのユーザーに対してこれを行うことができると思います。私は間違った言葉を使っているかもしれませんが、ここにいる人々が私のニーズを理解して助けてくれることを本当に願っています.

4

3 に答える 3