让我们说我正在编写一个简单的论坛并拥有表格:'用户','论坛','forum_subscribers'和'帖子'。 'groups','posts'和'forum_subscribers'将'user'作为外键引用。
我想创建一个名为'user_profile'的视图,其中包含
如何使用count()函数执行此操作?
答案 0 :(得分: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