日期:2014-05-17  浏览次数:20724 次

数据库中数据的统计问题
我的数据库有三个表,其中表1是一级计划,表2是二级计划,表2的一个字段s_id=表1的id,表3的一个字段ss_id=表2的id。
现在我按时间查询表1的数据
<%
sql=select * from 表1 where time between time1 and time2
set rs = server.createobject("adodb.recordset")
rs.open sql,connstr,1,1

  totalcount=rs.recordcount
%>
<table>
<tr><td>
...
</td></tr>
<%
  sql1=select * from 表2 where s_id=rs("id")
set rs1 = server.createobject("adodb.recordset")
rs1.open sql1,connstr,1,1
totalcount1=rs1.recordcount
%>

</table>

现在的问题是,查询后,表1 totalcount的值正确,而totalcount1的值不正确。
不知道怎么回事?

------解决方案--------------------
如果按照你发帖的那个方式显示,连接数据库次数就有点多了,虽然可以在rs.recordcount后使用 rs.move 1 使指针回到第一条记录上,但不推荐这么使用

建议一次将需要的数据全不读出,然后在程序内处理

如果只是汇总所有数据,类似 “该时间段内包含2项一级计划,包含3项二级计划,以及10项三级计划”

那么直接就这样

Sql = "select count(*) as 汇总 from 计划一 where 时间 between ... union select count(*) as 汇总 from 计划一 a left join 计划二 b on a.id=b.s_id where a.时间 between ... union select count(*) as 汇总 from 计划一 a left join 计划二 b on a.id=b.s_id left join 计划三 c on b.id=c.ss_id where a.时间 between ..."

试试看,第一条记录就是一级计划的数量,第二条就是二级的数量