【问题标题】:Counting rows from 2 MySQL tables JOIN with 3th and ORDER BY highest counting result计算 2 个 MySQL 表中的行数 JOIN 与 3th 和 ORDER BY 最高计数结果
【发布时间】:2014-01-21 10:04:58
【问题描述】:

我正在尝试计算 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 从最高职位到最低职位..

【问题讨论】:

  • 请添加您尝试提问的内容
  • 我尝试了很多变体,但没有任何效果。这是我的耻辱,但我从不使用括号,所以我从来没有接近解决这个问题。问题已经解决,所以我宁愿不要发布我愚蠢的试用..与功能查询相比真的很愚蠢..

标签: php mysql sql join sql-order-by


【解决方案1】:

你可以做一个UNIONT1 & T2然后用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 中使用这个 count(*) 行?用这个 -> while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $row(要显示什么计数?!) }
  • @TichomírDuchaplný 抱歉,我对 PHP 的了解非常有限。我可能无法正确回答您的问题。你可以试试$row[1]
  • ok thx,我尝试了一些东西..所以请帮助我理解这个 SQL,我想从最高职位到最低职位,但如果我写 GROUP BY 2,我会得到这个问题“可以” t group on 'posts'".. 我不能按 id 或 name 排序,我需要按这个 count 帖子排序,但它不起作用,我该怎么办?
  • @TichomírDuchaplný 在GROUP BY id_users 之后添加ORDER BY posts DESC
【解决方案2】:
select t3.name, count(*) from 
t3 inner join
     (select id_users from t1
     union all 
     select id_users from t2) as posts
on posts.id_users=t3.id
group by 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2014-01-12
    相关资源
    最近更新 更多