我想求这两个表的总和
请帮我解决这个问题
表 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/