【问题标题】:how count and sum records in three tables using mysql phpmyadmin?如何使用 mysql phpmyadmin 对三个表中的记录进行计数和求和?
【发布时间】:2021-09-06 05:05:29
【问题描述】:

我是这个社区的新手,也是 MySQL 的新手。

需要COUNT客户端和SUM每个referrer的佣金分别使用MySQL查询。

推荐人表

id referrer_name
1 referre1
2 referre2
3 referre3
4 referre4

客户表

id referrer_id client_name
1 1 client1
2 1 client2
3 2 client3
4 3 client4
5 4 client5

佣金表

id client_id commission
1 1 20
2 1 32
3 3 24
4 4 15

我想使用以上 3 个表格实现以下输出。

referrer_id referrer_name total_client total_commission
1 referre1 2 52
2 referre2 1 24
3 referre3 1 15
4 referre4 1 0

我尝试了以下查询

 SELECT referrer.referrer_name as name,
(SELECT COUNT(*) FROM client WHERE client.referrer_id=referrer.id) as total_client,
(SELECT SUM(commission) FROM commission WHERE commission.client_id=client.id) as total_commission FROM referrer LEFT JOIN client ON client.referrer_id=referrer.id GROUP BY name;

【问题讨论】:

  • 请在提问前学习并做一些研究,我们不是来为你解决你的作业的,如果你在做这件事的过程中遇到困难,我们可以帮助你,但只是要求你解决你的作业无论如何都帮不了你。
  • 原因就在你的评论上面。
  • 这是作业吗,这是问题,您没有解决方案。所以在这里提出有用的理由。
  • 您是否尝试过解决它?这样做有什么错误吗?
  • 当然,我从 12 小时开始尝试,我使用 php codeigniter 3。它不显示,有时它为每个引荐来源计算相同的客户端,有时只计算零。

标签: mysql phpmyadmin


【解决方案1】:

阅读Mysql joinAggregate Functions

SELECT t2.referrer_id,
       t1.referrer_name,
       COUNT(DISTINCT t2.id) AS total_client,
       SUM(t3.commission)                 AS total_commission
FROM referrer t1
         JOIN client t2 ON t1.id = t2.referrer_id
         JOIN commission t3 ON t2.id = t3.client_id
GROUP BY t1.referrer_id

【讨论】:

  • 谢谢@Soheil Rahsaz
  • 我们可以在这个查询中使用 where 子句或左连接吗?
  • @onlinegsali 当然,把WHERE放在group by之前。 LEFT JOIN 也是可能的。请注意sum() 如果没有什么要求和,则返回 null
  • 再次感谢@Soheil Rahsaz
猜你喜欢
  • 1970-01-01
  • 2013-10-24
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多