我有一个非常简单的问题,我试图解决它,但无法绕过它。
我有三张结构相同的表
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查询但没有令人满意的结果。
谢谢你的帮助!
答案 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 。