Mysql left Join - 两列之和错误

Mysql left Join - sum of two columns is error

我有两个table,

TABLE一个项Table

| id | user     | task_date  |count|
|----|----------|------------|-----|
| 1  | king     | 2020-08-01 | 100 |
| 2  | king     | 2020-08-02 | 300 |
| 3  | king     | 2020-08-04 | 50  | 
| 4  | king     | 2020-08-03 | 90  |
| 5  | king     | 2020-08-05 | 70  |
| 6  | king     | 2020-08-06 | 20  |
| 7  | king     | 2020-08-07 | 20  |
| 8  | king     | 2020-08-08 | 220 |
| 9  | king     | 2020-08-09 | 30  |
| 10 | king     | 2020-08-04 | 40  |

TableB错误table

| id | user     | dev_date   |error_count|
|----|----------|------------|-----------|
| 25 | king     | 2020-08-01 | 10        |
| 22 | king     | 2020-08-02 | 10        |
| 20 | king     | 2020-08-04 | 20        | 

预期输出

| SumOfCount| SumOfError|
|-----------|-----------|
| 940       |40         |

我试过了

select
sum(a.count),sum(b.error_count)
from entry_table a
LEFT JOIN  error_table b ON a.user = b.user
where a.user = "king" and a.task_date between '2020-08-01' and '2020-08-31' and b.dev_date between '2020-08-01' and '2020-08-31'

显示的金额无效。我哪里弄错了?

您在两个表之间有很多可能的关系,因为 SumOfCount 将增加 3 倍,而 SumOfError 将增加 10 倍,因为您首先加入然后聚合。但是在这里你必须先做反向聚合然后加入

这样试试

select 
a.SumOfCount, b.SumOfError
from (
select user, sum(count) SumOfCount
from entry_table where user='king' and task_date between '2020-08-01' and '2020-08-31' 
) a left join 

(
select user, sum(error_count) SumOfError
from error_table where user='king' and dev_date between '2020-08-01' and '2020-08-31'
) b on a.user=b.user