我有2个表,我正在尝试建立查询,但是我没有正确的结果,有人可以帮我吗?
表1:
code|name
74|Jhon
06|Sara
92|Fred
75|Will
06|Sara
13|Lola
表2:
code|amount|folder
06|500|1
74|135|0
13|150|0
13|100|1
92|200|1
75|250|0
06|300|1
我想按名称选择文件夹的数量和总数以及具有0的文件夹数量。
我做了以下查询:
select table1.name,
sum(table2.amount) as amount_tot,
count(table2.folder) as nb_folder,
sum(table2.folder) as nb_folder_ko
from table1 inner join table2 on table1.code=table2.code
group by name
我得到以下结果:
name|amount_tot|nb_folder|nb_folder_ko
Lola|250|2|1
Fred|450|2|1
Sara|1600|4|4
Jhon|135|1|0
如您所见,关于我的源表,这是不正确的,我认为我的查询做了一些重复计算,但是我不知道如何解决它,请帮我:)
您会获得多对多的加入(而不是一对多)。在加入之前应用DISTINCT:
select table1.name,
sum(table2.amount) as amount_tot,
count(table2.folder) as nb_folder,
sum(table2.folder) as nb_folder_ko
from
(
select distinct name, code
from table1
) as table1
inner join table2
on table1.code=table2.code
group by name
如果名称/代码组合不是唯一的,请切换到
select max(name), code
from table1
group by code