1

多くのフォーラムやWebサイトでは、投稿またはテーブルにユーザー情報が表示されます(複数のユーザーを表示している場合)。

たとえば、フォーラムスレッドがあり、その各投稿に次のような投稿者に関する情報が表示されているとします。

名前:ジョンEメール:email@email.com投稿:450

おそらく、名前と電子メールが保存されているユーザー用のテーブルと、投稿用のテーブルがあります。

1つのSQLステートメントでそれを行うことができると思う唯一のことは、ユーザーが投稿するたびにユーザーテーブルの行(投稿を行うユーザーに対応する行)に1を追加することです。これは悪い解決策のようです。自分。

各ユーザーの投稿数をどのようにカウントしますか?

4

2 に答える 2

3

SQLCOUNT()関数を使用して、カウントを動的に生成します。

SELECT COUNT( *) FROM posts WHERE user_id = 1

postsこれにより、条件に一致するユーザーによって書き込まれたテーブル内の行数がカウントされますuser_id = 1

1つのクエリでこれを行うには、次のようにJOINとGROUPBY識別子を使用できます。

SELECT username, user_email, COUNT( p.post_id) as num_posts
    FROM users u
    LEFT JOIN posts p
    ON p.user_id = u.user_id
WHERE u.user_id = 1
GROUP BY u.user_id
于 2012-06-29T19:38:59.010 に答える
1

電子メールがユーザーテーブルで一意であると仮定すると、次のことができます。

SELECT u.name, u.email, count(*) 
FROM users u, posts p
WHERE u.user_id = p.user_id
GROUP BY u.email;
于 2012-06-29T19:41:05.543 に答える