左连接SUM和COUNT数据重复问题
今天开发时,需要将统计相关的包裹数量和包裹重量代码如下:
select ao.sent_ordere,count(wp.sent_order) num,wg.pack_no,
group_concat(DISTINCT wg.goods_name) AS goods_name,
SUM(c.weight) weight,
FROM advance_order ao
LEFT JOIN packaging_costs c ON ao.sent_order = c.old_sent_order
LEFT JOIN advance_pack wp ON ao.sent_order = wp.sent_order
LEFT JOIN shipping_goods wg ON wp.pack_no = wg.pack_no
where ao.cabinet_no = 'WM000000025'
GROUP BY ao.sent_order
在左连接时对表中的多条数据进行查询,这样写会导致我会累计相加多遍。
解决:
将包裹表中查询到的数据存储到一个临时表中,临时表名叫作wp
select ao.sent_order,wp.num,wg.pack_no,group_concat(DISTINCT wg.goods_name) AS goods_name,
FROM wms_advance_order ao
LEFT JOIN (select count(old_pack_no) num,sent_order,old_pack_no from wms_advance_pack GROUP BY sent_order ) AS wp
on ao.sent_order = wp.sent_order
LEFT JOIN wms_shipping_goods wg ON wp.old_pack_no = wg.pack_no
WHERE ao.cabinet_no = 'WM000000025'
GROUP BY ao.sent_order
成功解决问题