日期:2014-05-17  浏览次数:20494 次

三个表做 左外连接 出现的问题
use 查询计划4
go
select a.订单号,a.UPC,a.英文名称,a.中文名称,a.单位,a.订单数量,sum(b.入库数量) as N'入库数量',sum(c.装箱数量) as N'装箱数量',a.办公室 from 订单记录表 as a left outer join 订单入库表 as b on a.订单号=b.订单号 and a.upc=b.upc 
LEFT OUTER JOIN 订单装箱记录表 as c on a.订单号=C.订单号 and a.UPC=c.UPC where a.订单号='id12212' group by a.订单号,a.UPC,a.英文名称,a.中文名称,a.单位,a.订单数量,a.办公室 

查询出的结果 b.入库数量 这一列的数据翻2倍 c.装箱数量 这一列的数据翻3倍

请问各位大侠,这个问题应该如何解决呢?



------解决方案--------------------
先left join变成一张表后,再做sum操作
select 订单号,UPC,英文名称,中文名称,单位,订单数量,办公室,sum(入库数量) as N'入库数量',sum(装箱数量) as N'装箱数量' from 
(select a.订单号,a.UPC,a.英文名称,a.中文名称,a.单位,a.订单数量,b.入库数量 ,c.装箱数量,a.办公室 
from 订单记录表 as a 
left outer join 订单入库表 as b on a.订单号=b.订单号 and a.upc=b.upc
LEFT OUTER JOIN 订单装箱记录表 as c on a.订单号=C.订单号 and a.UPC=c.UPC 
where a.订单号='id12212') d
group by 订单号,UPC,英文名称,中文名称,单位,订单数量,办公室

------解决方案--------------------
思路:左外连接之类的,建议先合并为一张表之后,用distinct过滤之后,确认没有重复记录了,在sum。这样就不存在重复加了多次记录的问题。