■求计数器统计的SQL语句

yusuan 2004-08-28 07:35:50
目前正在编写一个网站计数器部分的模块,后台数据库用的Access,表的结构定义如下:
ID,IP,VisitTime,其中VisitTime默认值取的是Now(),现在想实现这样的功能:
根据天数分组统计流量:
我的SQL语句如下:
Select Distinct Count(*),FormatDateTime(VisitTime,1) From Visit Group By FormatDateTime(VisitTime,1)
上面的语句在Access可以正常的运行,结果也正确,可是在ASP运行时却发生了错误,请问应如何修改?谢谢!!!
...全文
216 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yusuan 2004-08-28
  • 打赏
  • 举报
回复
我新建了一个VisitDate字段,可是问题依旧
yusuan 2004-08-28
  • 打赏
  • 举报
回复
没有存储过程的话,需要打开多次记录集,代码无缘无故的多行,真是没办法,可是有时空间不支持SQL Server真是没有办法。
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
ACCESS我总觉得不好,稍微复杂一点的就做不了,我以前曾经做了一个更新,用了两次子查询,结果硬是不出来,后来手工分步骤,用临时字段才解决(可能是偏见吧 :D)
yusuan 2004-08-28
  • 打赏
  • 举报
回复
这样的话,数据表这样建就可以了
ID 自动编号
IP 文本(15)
VisitTime DateTime(默认值Now())
VisitDate DateTime(默认值Date())
然后对VisitDate分组统计,应该没什么问题,但这怎么也觉得别扭,难道没有更好的办法么?以后的网站我说什么也不用Access了
yusuan 2004-08-28
  • 打赏
  • 举报
回复
Select Count(*) From Visit可以取出记录条数
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
语句应该没错吧? 我简单的测试了一下,没有错误啊.

不过FormatDateTime(VisitTime,1),这个字段值是算出来,再分组的

你可以试试在表中增加这一个字段,先算出FormatDateTime(VisitTime,1)的值,保存到新字段中,再用新字段分组统计
yusuan 2004-08-28
  • 打赏
  • 举报
回复
如果时间充裕的话,可以建一个这样的数据表
ID 自动编号
IP 文本(15)
VisitTime DateTime(默认值Now())
随便添几条记录试一下就可以了
yusuan 2004-08-28
  • 打赏
  • 举报
回复
我觉得这条语句应该是有问题,绝对不会是因为数据库损坏的原因,因为现在公司网上就是用的这套数据库
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
ACCESS都查不出来? 你试试用ACCESS打开数据库,修复一下.
yusuan 2004-08-28
  • 打赏
  • 举报
回复
总共的记录也就不到三千条(这张表)其它的记录加到一起也不会超过1万条,Access还不至于吧?
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
那是你表中的数据太多,ACCESS承受不了这么大的处理量吧.
yusuan 2004-08-28
  • 打赏
  • 举报
回复
视图也试到了,但结果一样,CPU占到了100%
而且Count(*)的值为1,rs(1)的值为空(也可能是Null)
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
那你建成视图,调用视图呢?

同样的语句在ACCESS中可以得到数据吗? 速度怎么样?
yusuan 2004-08-28
  • 打赏
  • 举报
回复
<%
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "Select Count(*),FormatDateTime(VisitTime,1) From Visit Group By FormatDateTime(VisitTime,1)",Conn,1,1
%>
<TABLE ALIGN="center" BORDER="1" BORDERCOLOR="#6699CC" CELLPADDING="4" CELLSPACING="0" WIDTH="100%">
<TR>
<TH WIDTH="5%">
序号
</TH>
<TH WIDTH="80%">
柱形图
</TH>
<TH WIDTH="15%">
日期
</TH>
</TR>
<%
i=1
While Not rs.EOF
%>
<TR>
<TH>
<%=i%>
</TH>
<TD>
<IMG ALIGN="absmiddle" BORDER="0" HEIGHT="15" SRC="images/vote.gif" WIDTH="<%=rs(0)%>"> <%=rs(0)%>
</TD>
<TH>
<%=rs(1)%>
</TH>
</TR>
<%
rs.MoveNext
i=i+1
Wend
rs.Close
Set rs=Nothing
%>


没有错误提示,只是任务管理器中的CPU占用到了100%,肯定是已经查找到了无穷的记录。
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
那你说的错误是什么错误?错误提示呢?
yusuan 2004-08-28
  • 打赏
  • 举报
回复
我在页面中已经去掉Distinct了,调用的时候用的是rs(0),rs(1)应该不用指定列名也可以呀
zjcxc 2004-08-28
  • 打赏
  • 举报
回复
'既然要按天统计,为什么要去重复呢?
'为count(*)指定列名

Select Count(*) as 计数,FormatDateTime(VisitTime,1) From Visit Group By FormatDateTime(VisitTime,1)
yusuan 2004-08-28
  • 打赏
  • 举报
回复
自己UP吧 :(
yusuan 2004-08-28
  • 打赏
  • 举报
回复
rs中的记录好像是无穷的,但实际上应该不到10条。
changechange 2004-08-28
  • 打赏
  • 举报
回复
发生什么错误?
关于此主题请参考:
在技术论坛提问的技巧《其他》
http://access911.net/index.asp?u1=a&u2=72FAB61E17DCE7F3

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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