0

簡単なフォーラムをコーディングしていて、「user」、「forum」、「forum_subscribers」、および「posts」というテーブルがあるとしましょう。「groups」、「posts」、および「forum_subscribers」は「user」を外部キーとして参照します。

を含む「user_profile」というビューを作成したい

  • ユーザーが購読しているフォーラムの数
  • forum_x に投稿した投稿の数、および
  • すべてのフォーラムの投稿の総数 (グループはフォーラムまたはカテゴリと考えることができます)。

count() 関数を使用してこれを行うにはどうすればよいですか?

4

1 に答える 1

0

3つのユニオンよりもはるかにうまくできるとは思いません(最後の2つは と組み合わせることができるかもしれませんCOUNT DISTINCT)。以下のテーブル構造について多くの仮定を立てましたが、これを構造に変換するのは簡単だと思います。

CREATE VIEW myView AS
SELECT user.id, CAST(posts.forum_id AS VARCHAR(20)) AS forum_id, COUNT(posts.id)
FROM user
  JOIN posts ON user.id = posts.user_id
GROUP BY user.id, posts.forum_id
    UNION
SELECT user.id, 'All forums', COUNT(posts.id)
FROM user
  JOIN posts ON user.id = posts.user_id
GROUP BY user.id
    UNION
SELECT user.id, 'Subscription count', COUNT(fs.forum_id)
FROM user
  JOIN forum_subscribers fs ON user.id = fs.user_id
GROUP BY user.id
于 2013-01-02T06:12:01.677 に答える