php - 计算来自 2 个 MySQL 表的行 JOIN 与第 3 和 ORDER BY 最高计数结果

标签 php mysql sql join sql-order-by

我正在尝试计算 2 个表中的帖子数并加入我保留名称的第三个表,但我真的很难做到这一点..

T1 - id, message, id_users
T2 - id, reply, id_users
T3 - id, name

T1 只有主题,T2 只有主题的回复,T3 有用户的信息,比如名字..

我想做统计,哪个用户有最多的帖子(包括主题),像这样:

user1 - 454 total (topics + posts)
user2 - 421 total (topics + posts)

等等..

我真的无法编写 SQL 来执行此操作,我所知道的都行不通,也无法弄清楚,我可能会写入 ORDER BY 设置为从最高职位到最低职位进行 ORDER..

最佳答案

您可以对 T1T2 执行 UNION,然后将结果与 T3 合并,最后执行GROUP BYCOUNT 帖子数,如下所示:

SELECT names, COUNT(*) as posts
FROM T3
JOIN (
   SELECT id_users FROM T1
   UNION All
   SELECT id_users FROM T2
) as t
ON T3.id = t.id_users
GROUP BY id_users

关于php - 计算来自 2 个 MySQL 表的行 JOIN 与第 3 和 ORDER BY 最高计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254917/

相关文章:

php - 如何使wp_editor以可视模式启动

php - PHP未检测到错误,但无法正确显示

sql - 如何使用以下条件在 SQL 中创建 DB2 存储过程?

php - 运行此循环时如何避免 php 超时?

php - 在javascript中将json文件加载到数组中

php - 锁定 MySQL 数据库以便一次只有一个人可以运行查询?

mysql - 使用 Phpmyadmin 在 MySQL 中设计包含关系表的数据库

php - 查询每行两个互补值

sql - 如何配置 Firebird 数据库在内存中运行

mysql - 替换每行中的第 11 个字符