次の2つのテーブル、メンバー、POSTSを含むデータベースがあります。ユーザーの投稿数を取得する方法を探しています。
(出典: http: //i.stack.imgur.com/FDv31.png)
次のSQLコマンドの多くのバリエーションを試しましたが、成功しませんでした。1人のユーザーの投稿数を表示する代わりに、すべての投稿を数として含む1行を表示します。
結局私はこのようなものが欲しい
(出典: http: //i.stack.imgur.com/EbaEj.png)
次の2つのテーブル、メンバー、POSTSを含むデータベースがあります。ユーザーの投稿数を取得する方法を探しています。
(出典: http: //i.stack.imgur.com/FDv31.png)
次のSQLコマンドの多くのバリエーションを試しましたが、成功しませんでした。1人のユーザーの投稿数を表示する代わりに、すべての投稿を数として含む1行を表示します。
結局私はこのようなものが欲しい
(出典: http: //i.stack.imgur.com/EbaEj.png)
ここで何かが足りないのかもしれませんが、このクエリはあなたが望む結果を与えるように思われます:
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デモを参照してください。
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
サブクエリを使用して、メンバーごとの合計投稿数を計算できます。
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