MySQL-SUM多个COUNTs?

时间:2010-01-25 23:19:43

标签: mysql

我必须得到一些数据,如果可能的话,应该在一个查询中完成 - 如果推动推动我总是可以写一些PHP逻辑来做两个,但我认为它可以做到这一点在一个查询中。我不知道怎么做!

这是我想要做的:

生成一个列表,显示作者的帖子总数。因此,我必须将COUNT三个不同的列(reviewsID FROM reviews, featuresID FROM features & newsID FROM news)和SUM三个不同的列放在一起,以提供总数。必须使用WHERE userID = THE_ID来限制这些用户。

与此同时,我想要一个更简单的查询,从数据库中获取关于他/她的一些事情 - userRealName and userLevel

SELECT userRealName, userLevel FROM user WHERE (userLevel = 'a' OR userLevel = 'e' OR userLevel ='r')

决赛桌应该是这样的:

*userRealName*userLevel*articles*
|------------|---------|--------|
|The user    |e        |87      |
|Another user|r        |34      |

这可能吗?

1 个答案:

答案 0 :(得分:1)

如果没有MySQL来测试它真的很难,但我认为这样的事情会起作用:

SELECT u.userRealName, u.userLevel, COUNT(t.articleID)
FROM user u,
(
    SELECT userID, reviewsID articleID FROM reviews
    UNION ALL
    SELECT userID, featuresID articleID FROM features
    UNION ALL
    SELECT userID, newsID articleID FROM news
) t
WHERE u.userID = t.userID
   AND (u.userLevel = 'a' OR u.userLevel = 'e' OR u.userLevel ='r')
GROUP BY u.userRealName, u.userLevel