统计原始订单表和供应商订单表的总额按照供应商归类统计总和,以订单号为关联
两个表,1对N, 原始订单表[order_in] 零部件供应订单表[order_out] order_in 结构
------------------------
order_id
qty_in
date_in
总额order_out 结构
------------------------
order_id
供应商id
总额
date_out------------------------
目前的错误SQL写法
select order_in.order_id,sum(order_in.总额) as ttlin, sum(order_out.总额) as ttlout from order_in ,order_out where order_in.order_id=order_out.order_id group by order_out.供应商id
目的就是统计各供应商订单的利润情况,
看是正确,但问题出现了,order_in的总额会多次累加,因1对N的关系,造成ttlin总数不准,order_out反而是准确的。
两个表,1对N, 原始订单表[order_in] 零部件供应订单表[order_out] order_in 结构
------------------------
order_id
qty_in
date_in
总额order_out 结构
------------------------
order_id
供应商id
总额
date_out------------------------
目前的错误SQL写法
select order_in.order_id,sum(order_in.总额) as ttlin, sum(order_out.总额) as ttlout from order_in ,order_out where order_in.order_id=order_out.order_id group by order_out.供应商id
目的就是统计各供应商订单的利润情况,
看是正确,但问题出现了,order_in的总额会多次累加,因1对N的关系,造成ttlin总数不准,order_out反而是准确的。
select 供应商id , sum(总额) ttlout , ttlin = (select sum(总额) from order_in where order_id = t.order_id)
from order_out
group by 供应商id
select 供应商id , sum(总额) ttlout , ttlin = (select sum(总额) from order_in where order_id = t.order_id)
from order_out t
group by 供应商id
in:out == 1:N
我把表结构和需求改动一下,
这个才是实际需求:
求所有的Buyer给我们订单多少钱,我们给供应商多少钱。按照buyer 来 grouporder_in 结构
------------------------
order_id
Buyer_id
qty_in
date_in
总额 order_out 结构
------------------------
order_id
供应商id
总额
date_out
------------------------------------------SQL写法:
select order_in.order_id,sum(order_in.总额) as ttlin, sum(order_out.总额) as ttlout
from order_in ,order_out
where order_in.order_id=order_out.order_id
group by order_in.buyer_id现在需求是符合实际了,但统计order_in的总额还是被多次统计过。
select t.供应商id , sum(t.ttlout) ttlout , sum(m.总额) ttlin from
(select 供应商id , order_id , sum(总额) ttlout from order_out group by 供应商id , order_id) t,order_in m
where t.order_id = m.order_id
group by t.供应商id
select order_in.buyer_id,sum(order_in.总额) as ttlin, sum(order_out.总额) as ttlout
from order_in ,order_out
where order_in.order_id=order_out.order_id
group by order_in.buyer_id
潇洒老乌龟(原名:爱新觉罗.毓华)
等 级:是我的题目有问题,所以需求显得太怪了。。
不好意思,揭帖。。