日期:2014-05-18  浏览次数:20497 次

sql 多表联合查询,按照某个结果进行排序
表1   cangku
id     产品名称  

表2   xiaoshou    
id     产品id     数量   单价   总额   销售日期

表3   tuihuo
id     产品id     数量   单价   总额     退货日期


现在我要通过联合查询实现以下功能

产品名称   销售数量   销售总额     该产品最后一次销售日期     退货数量     退货总额   该产品最后一次退货日期
   

要求   按照最后一次销售日期进行排序,不管有没有销售记录,都要列出所有产品的名称.(我想知道某个产品的销售数量,总额   最后一次销售日期,退货数量,退货总额,最后退货日期)

请问这样的sql   语句怎么写?

这个问题是第三次升级了.谢谢前面几位大哥的指点.



------解决方案--------------------
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.该产品最后一次销售日期