Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获得用户完成的帖子数量_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 如何获得用户完成的帖子数量

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

我的问题是: 我有4个表,由用户保存post(比如CatA、CatB、CatC和CatD,每个表由列创建)。我的要求是通过post count(post之和)从表
user
中获取所有可用的用户

在过去的两天里,我一直在努力寻找答案,但我仍然不知所措

任何想法都值得赞赏


这将返回顶部的总帖子数(与用户帖子数无关),而不是每个用户的帖子数

用户名|用户1 |用户2 |用户3
职位总数| 11020(职位总数)|空|空|等等

更多信息:

SELECT created_by, COUNT(*) AS cnt FROM CatA GROUP BY created_by
这让我想起:

由| 22 | 26 | 88 | 90创建的| u
cnt | 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