我想找出这两张表的总和
请帮我解决这个问题
表1
id  |  pr_id  |  cl_one
========================
 1  |    2    |   500
------------------------
 2  |    2    |   500表2
id  |  pr_id  |   cl2
======================
 1  |    2    |   500codeigniter查询
$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;发布于 2019-08-23 00:34:01
您将得到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中如何做到这一点,但我希望这能帮助/很容易地被翻译
发布于 2019-08-23 02:06:03
终于成功了……
修复此的简单查询
SELECT pr_id, SUM(sum_v) AS total_amount, COUNT(sum_v) AS total_counts FROM( 
SELECT pr_id, cl_one AS sum_v FROM table1  UNION ALL 
SELECT pr_id, cl2 AS sum_v FROM table2)x GROUP BY pr_id发布于 2019-08-27 13:38:15
Codeigniter查询:
$res1 = $this->db->select('SUM(cl_one) as total, COUNT(cl_one) as count').from('Table1').get().row();
$res2 = $this->db->select('SUM(cl_2) as total, COUNT(cl_2) as count').from('Table2').get().row();
$total_amount = $res1[0]['total'] + $res2[0]['total'];
$total_count = $res1[0]['count'] + $res2[0]['count'];https://stackoverflow.com/questions/57613512
复制相似问题