Mysql 如何获得用户完成的帖子数量
我的问题是: 我有4个表,由用户保存post(比如CatA、CatB、CatC和CatD,每个表由列创建)。我的要求是通过post count(post之和)从表Mysql 如何获得用户完成的帖子数量,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我的问题是: 我有4个表,由用户保存post(比如CatA、CatB、CatC和CatD,每个表由列创建)。我的要求是通过post count(post之和)从表user中获取所有可用的用户 在过去的两天里,我一直在努力寻找答案,但我仍然不知所措 任何想法都值得赞赏 这将返回顶部的总帖子数(与用户帖子数无关),而不是每个用户的帖子数 用户名|用户1 |用户2 |用户3 职位总数| 11020(职位总数)|空|空|等等 更多信息: SELECT created_by, COUNT(*) AS c
user
中获取所有可用的用户
在过去的两天里,我一直在努力寻找答案,但我仍然不知所措
任何想法都值得赞赏
这将返回顶部的总帖子数(与用户帖子数无关),而不是每个用户的帖子数 用户名|用户1 |用户2 |用户3
职位总数| 11020(职位总数)|空|空|等等 更多信息:
SELECT created_by, COUNT(*) AS cnt FROM CatA GROUP BY created_by
这让我想起:
由| 22 | 26 | 88 | 90创建的| ucnt | 6 | 20 | 15 | 8
因此,似乎每个类别都有一个单独的表(顺便说一句,这实际上不是最优化的设计)。要获得所有用户的帖子数量,您可以执行以下操作:
SELECT u.*,
a.cnt + b.cnt + c.cnt + d.cnt AS total_posts
FROM users u
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatA GROUP BY user_id) a
ON u.user_id = a.user_id
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatB GROUP BY user_id) b
ON u.user_id = b.user_id
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatC GROUP BY user_id) c
ON u.user_id = c.user_id
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatD GROUP BY user_id) d
ON u.user_id = d.user_id
使用
JOIN
加入所有用户ID为您所需的选项卡,然后countWelcome to SO。添加一些代码会很有帮助,至少是表定义,可能还有您尝试过的查询?您是想说每个表(CatA、CatB等)都包含一个create_by(更好的created_by)列吗?最好指定您的表,或者使示例更简单一些。
SELECT u.*,
a.cnt + b.cnt + c.cnt + d.cnt AS total_posts
FROM users u
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatA GROUP BY user_id) a
ON u.user_id = a.user_id
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatB GROUP BY user_id) b
ON u.user_id = b.user_id
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatC GROUP BY user_id) c
ON u.user_id = c.user_id
LEFT JOIN (SELECT user_id, COUNT(*) AS cnt FROM CatD GROUP BY user_id) d
ON u.user_id = d.user_id