0

假设我正在编写一个简单的论坛并有表格:“用户”、“论坛”、“论坛订阅者”和“帖子”。'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 回答