读书人

高分一条表联的sql语句

发布时间: 2012-11-05 09:35:12 作者: rapoo

高分,在线等一条表联的sql语句
有两张表,用户名cus_user与订单表D_order,订单表里有cus_userId的外键
现在要求是:
查出来有订单的用户名及订单数量,按数量从大到小排,如果数据不够10条,则以其它用户补充,订单数量显示为0按用户的编号排。

SQL code
select cu.loginName, count(*) as num from d_order o left join cus_user cu on o.cus_userId=cu.autoId group by cu.loginName order by num desc


这是在我的sql语句,只能查出来8条数据,但是用户还有很多,都是没有下过订单的,就是怎么样能从这些没有下过订单的用户里面从最后取两个(也就是按编号倒排)放到一起。

[解决办法]
select top 10 cu.loginName, isnull(count(o.cus_userid),0) as num
from d_order o right join cus_user cu on o.cus_userId=cu.autoId
group by cu.loginName order by num desc, cu.loginName
[解决办法]
SQL code
--1select cu.loginName, isnull(count(o.cus_userid),0) as num   from d_order o right join cus_user cu on o.cus_userId=cu.autoIdand  (orderType='ORDER_PRODUCT' or orderType='ORDER_GOODS') and orderStatusForCus='JYWC' group by cu.loginName order by num desc, cu.loginName --2SELECT  cu.loginName, isnull(count(o.cus_userid),0) as num   FROM cus_user cu LEFT JOIN (SELECT  cus_userId FROM d_order WHERE (orderType='ORDER_PRODUCT' or orderType='ORDER_GOODS') and orderStatusForCus='JYWC') oon o.cus_userId=cu.autoIdgroup by cu.loginName order by num desc, cu.loginName 

读书人网 >SQL Server

热点推荐