在三个mysql表中为员工添加值

时间:2017-03-08 00:08:04

标签: mysql sql

我有一个非常简单的问题,我试图解决它,但无法绕过它。

我有三张结构相同的表

t1.id, t1.cust_id, t1.name, t1.value
t2.id, t2.cust_id, t2.name, t2.value
t3.id, t3.cust_id, t3.name, t3.value 

客户出现在某些表格中但不出现在其他表格中;价值'每个记录都是一美元金额。

我想在mySQL中运行一个查询,该查询生成一个求和表,该表汇总了三个表中每个客户的所有购买。

我想要的输出看起来像:

 Name        Customer ID      T1      T2    T3

  Joe           88888        12.45  45.90  2.34
  Ted           99999         8.90   3.45  null
  Sue           12123         9.45   2.45  null

我已经尝试了一些JOIN查询但没有令人满意的结果。

谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

使用union all组合3个表中的行,然后使用聚合。

select cust_id,name,sum(t1val),sum(t2val),sum(t3val)
from (
select id, cust_id, name, value as t1val, null as t2val, null as t3val from t1
union all
select id, cust_id, name, null, value, null from t2
union all
select id, cust_id, name, null, null ,value from t3
) t
group by cust_id,name

答案 1 :(得分:0)

您可以使用SELECT,例如:

    SELECT (
        (SELECT COALESCE(SUM(value),0) FROM t1 WHERE cust_id = 100) 
        +
        (SELECT COALESCE(SUM(value),0) FROM t2 WHERE cust_id = 100)
        +
        (SELECT COALESCE(SUM(value),0) FROM t3 WHERE cust_id = 100)
    ) as total;

这是 SQL Fiddle