Vấn đề là store
với id 1 có hai bản ghi tương ứng trong store_sub
bảng, có nghĩa là qty
trường sẽ xuất hiện hai lần cho cửa hàng 1. Bạn cần tính tổng 2 bảng riêng biệt trong các truy vấn con và nối các phiên bản được tổng hợp lại với nhau:
select t1.department, t1.sqty, t2.ssubqty
from
(select department, sum(qty) as sqty from store group by department) t1
left join
(select s2.department, s1.sum(sub_qty) as ssubqty
from store_sub s1
inner join store s2 on s1.parent_id=s2.id
group by s2.department) t2 on t1.department=t2.department