2

次の2つのテーブル、メンバー、POSTSを含むデータベースがあります。ユーザーの投稿数を取得する方法を探しています。

ここに画像の説明を入力してください
出典: http: //i.stack.imgur.com/FDv31.png

次のSQLコマンドの多くのバリエーションを試しましたが、成功しませんでした。1人のユーザーの投稿数を表示する代わりに、すべての投稿を数として含む1行を表示します。

結局私はこのようなものが欲しい

ここに画像の説明を入力してください
出典: http: //i.stack.imgur.com/EbaEj.png

4

3 に答える 3

3

ここで何かが足りないのかもしれませんが、このクエリはあなたが望む結果を与えるように思われます:

SELECT member.ID,
       member.Name,
       (SELECT COUNT(*) FROM Posts WHERE member.ID = Posts.user_id) AS total
FROM   member;

カウントされるコメントのグループのその列に返されるコメントが明確でないため、クエリからコメントを除外しました。

ここでSQLFiddleのデモを参照してください。

編集申し訳ありませんが、あなたの質問を誤って解釈しました:-)このクエリは、コメントを投稿した人とその人が行ったコメントの総数とともに、すべて
のコメント を適切に返します。

SELECT Posts.ID,
       member.Name,
       (SELECT COUNT(*) FROM Posts WHERE member.ID = Posts.user_id) AS total,
       Posts.comment
FROM   Posts
INNER JOIN member ON Posts.user_id = member.ID
GROUP BY Posts.ID, member.Name, member.ID, Posts.comment;

ここで更新されたSQLFiddleデモを参照してください。

于 2013-01-20T10:15:25.343 に答える
1
select 
   a.id
   , a.name
   , count(1) over (partition by b.user_id) as TotalCountPerUser
   , b.comment
from member a join post b 
on a.id = b.user_id
于 2013-01-20T10:50:38.067 に答える
1

サブクエリを使用して、メンバーごとの合計投稿数を計算できます。

select  m.ID
,       m.Name
,       coalesce(grp.total, 0)
,       p.comment
from    member m
left join
        posts p
on      p.user_id = m.id
left join
        (
        select  user_id
        ,       count(*) as total
        from    posts
        group by
                user_id
        ) grp
on      grp.user_id = m.id
于 2013-01-20T09:56:05.867 に答える