【发布时间】:2018-04-30 03:32:18
【问题描述】:
我有两张桌子。一张表是主数据
表 tbl1:
+-------------+------------+------------+
| ID | Name | Total |
+-------------+------------+------------+
| 1 | a | 10 |
| 2 | b | 5 |
| 3 | c | 4 |
| 4 | a | 4 |
+-------------+------------+------------+
第二个表tbl2 包含子数据。表之间的键是ID
表 tbl2:
+-------------+------------+
|id | qty |
+-------------+------------+
| 1 | 4 |
| 1 | 3 |
| 1 | 1 |
| 3 | 1 |
| 3 | 3 |
+-------------+------------+
我需要得到这样的输出:
输出:
+-------------+------------+------------+
| name | sum_tot | sum_qty |
+-------------+------------+------------+
| a | 14 | 8 |
| b | 5 | 0 |
| c | 4 | 4 |
+-------------+------------+------------+
我试过这个:
select tbl1.name, SUM(tbl1.total), SUM(tbl2.qty)
from tbl1
left join tbl2 ON tbl1.id = tbl2.id
GROUP by tbl1.name
我得到的输出是:
输出:
+-------------+------------+------------+
| name | sum_tot | sum_qty |
+-------------+------------+------------+
| a | 34 | 8 |
| b | 5 |null |
| c | 8 | 4 |
+-------------+------------+------------+
这是不正确的。
这里是sql fiddle:
第一个表的摘要与第二个表无关。似乎以某种方式查询运行了 3 次。
【问题讨论】:
-
解释
a变成14的逻辑? -
a在表1中出现两次,一次为10,一次为4