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

一个排序的问题,各位老大帮个忙?
比如现在是这样的情况
A表  
序号 类名 总数(这个是动态的,表中不存在此项  
1 A 【15 】  
2 B 【12 】  
3 C 【18 】  
4 D 【9 】  
   
   
B表
序号 名称 分类ID
1 a 1
2 c 3  
3 a 1
4 d 4
............
x ax 2  
  可以算出B表每个分类的个数,比如A 15条,B
  12条,C 18条,D 9条  

说明,所含的记录数(这个是动态的)这个是另一个表中此类的记录数,这个是动态变化的。

现在我要根据B表每个分类所含记录条数的倒序来排列,排列后的结果为

A表  
序号 类名 所含的记录数(这个是动态的,表中不存在此项)  
3 C 【18 】  
1 A 【15 】  
2 B 【12 】  
4 D 【9 】

各位能看明白吧,这个怎么写SQL语句啊,不要存储过程,谢谢各位!  


------解决方案--------------------
SQL code
select 序号,类名
from a
order by (select count(1) from b where a.序号=b.分类ID) desc

------解决方案--------------------
试试这个,刚刚测试成功了的
SELECT 序号 ,COUNT(名称)AS num FROM A表 WHERE 序号 IN 
(
SELECT 序号 FROM B表 
)
GROUP BY A表.序号
ORDER BY num DESC
------解决方案--------------------
SELECT 序号 ,类名,COUNT(名称)AS num FROM A表
left join B表 on A表.类名 = B表.类名
GROUP BY A表.类名
ORDER BY num DESC
------解决方案--------------------
下面是我亲自试验的,不知是不是你想要的结果
create table t_B (
i_id int identity(1,1),
c_name char(10),
i_type int

)

insert t_B values('a',1)

insert t_B values('c',c)

insert t_B values('a',1)

insert t_B values('d',4)

select * from t_B

i_id c_name i_type
1 a 1
2 c 3
3 a 1
4 d 4

select i_type, c_name,count(1) as num from t_B group by i_type,c_name order by num desc
序号 类别 数量
1 a 2
3 c 1
4 d 1