add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table TABLE1 (table1_id int);
create table TABLE2 (table2_id int, table1_id int, earning money);
create table TABLE3 (table3_id int, table1_id int);

insert into TABLE1 values (1);
insert into TABLE2 values (49, 1, 10000); -- Expected sum = 10000
insert into TABLE3 values (991, 1); -- Expected count = 3
insert into TABLE3 values (992, 1);
insert into TABLE3 values (993, 1);

insert into TABLE1 values (2);
insert into TABLE2 values (21, 2, 3000); -- Expected sum = 7000.00
insert into TABLE2 values (22, 2, 4000);
insert into TABLE3 values (201, 2); -- Expected count = 5
insert into TABLE3 values (202, 2);
insert into TABLE3 values (203, 2);
insert into TABLE3 values (204, 2);
insert into TABLE3 values (205, 2);


13 rows affected
-- Inflated results due to
-- multiple independene one-to-many joins
select
T1.table1_id, SUM(T2.earning) AS Earning, COUNT(T3.table1_id) AS T3Count
from
TABLE1 T1
inner join
TABLE2 T2 on T2.table1_id = T1.table1_id
inner join
TABLE3 T3 on T3.table1_id = T1.table1_id
group by
T1.table1_id;
table1_id Earning T3Count
1 30000.0000 3
2 35000.0000 10
-- Fixed using CROSS APPLY
select
T1.table1_id, CA1.Earning, CA2.T3Count
from
TABLE1 T1
cross apply (
select SUM(earning) AS Earning
from TABLE2 T2
where T2.table1_id = T1.table1_id
) CA1
cross apply (
select COUNT(*) AS T3Count
from TABLE3 T3
where T3.table1_id = T1.table1_id
) CA2

table1_id Earning T3Count
1 10000.0000 3
2 7000.0000 5
-- Fixed using subqueries
select
T1.table1_id, SS1.Earning, SS2.T3Count
from
TABLE1 T1
inner join (
select T2.table1_id, SUM(earning) AS Earning
from TABLE2 T2
group by T2.table1_id
) SS1 on SS1.table1_id = T1.table1_id
inner join (
select T3.table1_id, COUNT(*) AS T3Count
from TABLE3 T3
group by T3.table1_id
) SS2 on SS2.table1_id = T1.table1_id

table1_id Earning T3Count
1 10000.0000 3
2 7000.0000 5