求最佳方法

Ariesman 2005-08-01 03:01:01
我要统计一个表中某一字段值为某些值的个数,并且将统计出来的结果进行排序
例如:school表中记录着所有在校学生情况,而每个班级又都有唯一标识字段,现在我要按照班级人数从少到多进行排序。
请教最佳方法。
用count 和 orderby是不够的,提出一个特例,某班级人数为0,但依然是一个班级,按道理应该排在最前面。
...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ariesman 2005-08-01
  • 打赏
  • 举报
回复
不错,是这个意思,谢谢你啊:)
其中两个写错了
Select COUNT(Scool.ClassID) As STUDENTNUM
From Class LEFT OUTER JOIN School ON Class.ClassID = Scool.ClassID
GROUP BY ...
ORDER BY COUNT(Scool.ClassID)
「已注销」 2005-08-01
  • 打赏
  • 举报
回复
在没有相关数据集时你用的Count得到的当前记录为NULL,所以无法排序出来
是不是这个情况?你一定用的INNER JOIN而不是OUTER JOIN
INNER JOIN是强制约束
OUTER JOIN是非强制约束
用OUTER JOIN可以在排序时将你所说的记录集排到前面

如 Select COUNT(Scool.ClassID) As STUDENTNUM
From Class LEFT OUTER JOIN School ON Scool.ClassID = Class.ClassID
GROUPBY ...
ODERBY COUNT(Scool.ClassID)

不知道是不是答非所问了:)
Ariesman 2005-08-01
  • 打赏
  • 举报
回复
没有班级表
我只是举个例子
实际中是四表联查呢

所以当某一条件下count的数量为0时,反倒不能一次排序了。
handsomerun 2005-08-01
  • 打赏
  • 举报
回复
要用到sum,用到orderby,用到GROUP BY

另外,有个表是班级信息吧,和这个school表联合查询

前一段时间做过一个类似的查询

不过一个班级没有学生,这个就不知道怎么办了,因为没有学生的话,在school表中就没有这个班的相关纪录了,呵呵
Ariesman 2005-08-01
  • 打赏
  • 举报
回复
UP

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧