mysql - 我想找到这两个表的总和

标签 mysql codeigniter

我想求这两个表的总和

请帮我解决这个问题

表 1

id  |  pr_id  |  cl_one
========================
 1  |    2    |   500
------------------------
 2  |    2    |   500

表2

id  |  pr_id  |   cl2
======================
 1  |    2    |   500

codeigniter查询

$this->db->select('SUM(s.cl_one)+SUM(l.cl2) AS total_amount, COUNT(s.cl_one)+SUM(l.cl2) AS total_counts')
                      ->from('Table1 AS s')
                      ->join('Table2 AS l', 's.pr_id = l.pr_id')
                      ->get()->row();

结果

total_amount = 2000;

total_counts = 4;

我需要这样的结果

total_amount = 1500;

total_count = 3;

最佳答案

您得到 2000,因为当您将 table2 中的一行连接到 table1 中的两行时,t2 中的单行会复制自身以匹配 t1 中的两行。如果您随后将添加的重复行加到额外的 500

解决这些问题的最简单方法是在加入它们之前对它们进行分组和求和:

SELECT t1.sum + t2.sum as total
FROM
  (SELECT pr_id, sum(cl_one) as sum FROM table1 GROUP BY pr_id) t1    
  INNER JOIN 
  (SELECT pr_id, sum(cl_2) as sum FROM table2 GROUP BY pr_id) t2    
  ON t1.pr_id = t2.pr_id

这样 t1 中的一行与 t2 中的一行匹配,不会重复... 但我不知道你如何在 codeigniter/无论你使用什么 ORM 中做到这一点,但我希望这可以帮助/很容易翻译

关于mysql - 我想找到这两个表的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57613512/

相关文章:

php - 让 MySQL 列从多个选择中更新

mysql inner join返回重复行

php - 删除和替换图像文件但仍然显示旧图像

php - Ajax - 与在后台运行的 PHP 脚本进行通信?

codeigniter - 错误: HTTP/1.1 401 Unauthorized

mysql - 在数据库中搜索字符串并获取相关信息 VB

mysql - 使用 Laravel 获取学生在考试中的位置科目

mysql - 消息中mysql中的嵌套查询

php - Codeigniter 事务不起作用

php - CodeIgniter 将 mysql 行转换为对象