表1 cangku
id  产品名称 表2 xiaoshou  
id  产品id  数量 单价 总额 销售日期表3 tuihuo
id  产品id  数量 单价 总额  退货日期
现在我要通过联合查询实现以下功能产品名称 销售数量 销售总额  该产品最后一次销售日期  退货数量  退货总额 该产品最后一次退货日期
  要求 按照最后一次销售日期进行排序,不管有没有销售记录,都要列出所有产品的名称.(我想知道某个产品的销售数量,总额 最后一次销售日期,退货数量,退货总额,最后退货日期)请问这样的sql 语句怎么写?这个问题是第三次升级了.谢谢前面几位大哥的指点.

解决方案 »

  1.   

    select * from cangku
    left join
    (
        select 
        产品id,sum(数量) as 销售数量,sum(总额) as 销售总额,max(销售日期) as 销售日期
        from xiaoshou
        group by 产品id
    ) as xiaoshou on cangku.产品id=xiaoshou.产品id
    left join
    (
        select
        产品id,sum(数量) as 退货数量,sum(总额) as 退货总额,max(退货日期) as 退货日期
        from tuihuo
        group by 产品id
    ) as tuihuo on cangku.产品id=tuihuo.产品id
      

  2.   

    select 
       t.产品名称,
       t.销售数量,
       t.销售总额,
       t.该产品最后一次销售日期,
       sum(c.数量) as 退货数量,
       sum(c.总额) as 退货总额,
       max(c.退货日期) as 该产品最后一次退货日期 
    from 
       (
       select 
          a.id,
          a.产品名称,
          sum(b.数量) as 销售数量,
          sum(b.总额) as 销售总额,
          max(b.销售日期) as 该产品最后一次销售日期 
       from 
          cangku a
       left join
          xiaoshou b
       on 
          a.id=b.产品id  
       group by 
          a.id,
          a.产品名称
       ) as t
    left join 
       tuihuo c
    on 
       t.id=c.产品id
    group by
       t.产品名称,
       t.销售数量,
       t.销售总额,
       t.该产品最后一次销售日期
      

  3.   

    少了排序
    +order by 
       t.该产品最后一次销售日期
      

  4.   

    非常 感谢 Yang_(扬帆破浪)  本人愚钝,花了一天的时间才把你写的代码 改成真正可以运行的代码,但是问题又出来了,我要 显示
     
    销售数量 销售总额  该产品最后一次销售日期的时候调用<%=rs("sumzonger")%> (销售总额) 的时候  提示未找到该项目请问我要显示 销售总额  的时候该 怎么写呢? 谢谢
      

  5.   

    销售总额 as sumzonger --取别名
      

  6.   


    例如
    select x.id,sum(tuihuo.zonger) as tuihuozonger from (select cangku.id,sum(xiaoshou.zonger)as sumzonger from cangku left join xiaoshou on cangku.id=xiaoshou.chanpinid group by cangku.id)as x left join tuihuo on x.id=tuihuo.chanpinid group by x.id为什么 <%=rs("sumzonger")%> 的时候会提示 未找到项目 呢?
    该如何 显示 sumzonger  ?