asp 气泡排序如何用

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:26:42
我想从mssql数据库中取出字段datetime 1月多条字段合计,2月合计。。。 直至12月,比如:
id---num---datetime
1----23-----2008-01-10
2----45-----2008-01-23
3----454----2008-02-12
4----135----2008-04-26
5----12-----2008-12-16
得到的可能某些月份没有数值,我如何把单月合计加起来,成为最多12个数值,然后用气泡排序得出最大的单月数量合计?
我使用下面的代码复制了12个,然后换下时间,换下xx11这个变量,
set rssum=server.CreateObject("adodb.recordset")
sqlsum="SELECT SUM(quantity) AS sum from [SD201N_2008].dbo."&CSALEDETAIL&" where datetime like '2008-11-%' "
rssum.open sqlsum,conn
xx11=clng(cstr(rssum.fields.item(0).value))
rssun.close
一个月一个月地求出值,再用气泡排序得最大值。

然后用http://zhidao.baidu.com/question/39469328.html?si=2 这个方法,
但查询数据库时执行速度太慢了。在客户端需要等4秒左右的时间。可不可以用for i=0 to 12 的方法查询数据库呢? 不过好像用for i=0 to 12 这方法也是查询数据库12次,有没别的什么办法。

修改数据库字段,将日期字段改成按年,月,日存储(就是把日期字段分成三个字段)
然后写select 语句的时候用 roup by (按月分组)和 集合函数 sum(累计和)及 where(判断年份)一条语句就搞定

查询数据库的速度不慢,执行以上查询,用不了1秒,你说得慢是你第一次执行查询语句的时候连接数据库慢,就是cn.open 的时候慢,其实select的速度很快,要比我们用代码 for 数组 速度快。
你慢的另一个可能是显示结果的时候慢,比如用mshflexgrid显示的时候,如果对mshflexgrid的用法不当显示就很慢

用select 查询数据库的时候,几千条记录都能在1秒内查询完毕~~~不要小看微软的数据库引擎,效率很高的,他的查询数据的效率,比我们自己写代码效率高多了。之所以慢是因为用法不当~~~

大哥,我跟你说的方法就一条查询语句,执行一次就ok了,你咋搞出 12 条来了。。