我必须获得一些数据,如果可能的话,应该在一个查询中完成——如果到了紧要关头,我总是可以编写一些 PHP 逻辑来分两次完成,但我认为这样做是可能的在单个查询中。我不知道怎么办!
这是我想做的:
生成一个列表,显示作者的帖子总数。因此,我必须从三个不同的表中COUNT
三个不同的列(reviewsID FROM reviews,featuresID FROM features & newsID FROM news
)然后SUM
它们一起提供一个总数字。这些必须使用 WHERE userID = THE_ID
进行限制才能拥有该单个用户。
同时,我想要一个更简单的查询,从数据库中获取关于他/她的一些信息——userRealName 和 userLevel
。
SELECT userRealName, userLevel FROM user WHERE (userLevel = 'a' OR userLevel = 'e' OR userLevel ='r')
决赛 table 应该是这样的:
*userRealName*userLevel*articles*
|------------|---------|--------|
|The user |e |87 |
|Another user|r |34 |
这可能吗?
最佳答案
如果没有 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
关于MySQL——对多个 COUNT 求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136448/