一条语句能否实现如下查询,我在php里面来回查了几次才实现,觉得太麻烦了:表indent(订单表,订单号是唯一的):
indent_id -订单号
danwei -生产单位
clientName -客户名称
productName -产品名称
productQuantity -产品数量
price -单价表schedule(生产进度表,流水记录):
indent_id -订单号
danwei -生产单位
complete -完成数
sendOut -发货数
按照生产单位分组显示:
生产单位,订单个数,全部订单产品数量,全部订单完成数,全部订单完成数的金额,全部订单发货数的金额

解决方案 »

  1.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  2.   

    select c.danwei as 生产单位,count(c.ident_id) as 订单个数,
    sum(c.productQuantity) as 全部订单产品数量,
    count(c.complete) as 全部订单完成数,
    sum(c.pirce*c.complete) as  全部订单完成数的金额,
    sum(c.price*c.sendOut) as 全部订单发货数的金额
    form  
    (select a.*,b.complete,b.sentOut from indent a,schedule b 
    where  a.danwei=b.danwei  and a.ident_id=b.ident_id) c 
    group by c.danwei
      

  3.   

    select danwei,count(*) as 订单个数,
    sum(productQuantity) as 全部订单产品数量,
    sum(complete) as 全部订单完成数,
    sum(complete*price) as 全部订单完成数的金额,
    sum(sendOut*price) as 全部订单发货数的金额
    from indent o left join schedule s on o.indent_id=s.indent_id
    group by  danwei
      

  4.   

    可能是我没说清楚,那个complete是流水记录,每个indent_id对应很多流水记录。全部订单完成数的金额,全部订单发货数的金额就是下机产值和出库产值。请看图片
    表indent表schedule(生产进度表,流水记录):目标效果:
      

  5.   

    按照2楼的方法可以实现,但是还有问题,只能查询出录入了生产进度的订单,如果新建的订单下面没有生产进度就查询不出来。有没有让查询为空的结果用0代替的方法?select c.danwei as 生产单位,count(c.indent_id) as 订单个数,sum(c.productQuantity) as 全部订单产品数量,count(c.complete) as 全部订单完成数,sum(c.price*c.complete) as  全部订单完成数的金额,sum(c.price*c.sendOut) as 全部订单发货数的金额 from  (select a.*,sum(b.complete) as complete,sum(b.sendOut) as sendOut from indent a,schedule b where  a.danwei=b.danwei  and 
    a.indent_id=b.indent_id) c group by c.danwei ;
      

  6.   


    select c.danwei as 生产单位,count(c.indent_id) as 订单个数,sum(c.productQuantity) as 全部订单产品数量,count(c.complete) as 全部订单完成数,sum(c.price*c.complete) as  全部订单完成数的金额,sum(c.price*c.sendOut) as 全部订单发货数的金额 from  (select a.*,sum(b.complete) as complete,sum(b.sendOut) as sendOut from indent a,schedule b where  a.danwei=b.danwei  and a.indent_id=b.indent_id) c group by c.danwei ;