CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

数据库统计问题

楼主jfu(谁动了我的奶酪)2005-09-19 18:48:47 在 Web 开发 / ASP 提问

数据库两个表,表1中存储员工名  
  表2中存储员工工作时间:  
  张三   3     2005-2-2  
  李四   4     2005-2-4  
  王二   2     2005-2-5  
  张三   1     2005-2-6  
  王二   3     2005-2-5  
  李四   2     2005-2-4  
  。。。。。。  
  如何统计出一张表,统计出所有员工在某段时间内(比如1月~3月)工作的时间总数?  
  具体代码怎么写?谢谢! 问题点数:100、回复次数:15Top

1 楼kicck(撒旦之吻)回复于 2005-09-19 18:53:28 得分 0

sql="select   *   from   表1   where   datetime   between   '"   &   起始时间   &   "'   and   '"   &   终止时间"'"Top

2 楼kevinworkroom(l.kevin)回复于 2005-09-19 18:54:08 得分 0

给出你的表结构Top

3 楼jfu(谁动了我的奶酪)回复于 2005-09-19 19:07:28 得分 0

表1:  
  id     员工  
  1         张三  
  2         李四  
  。。。。。。  
  表2  
  id     员工   工作时间     日期  
  1       张三       2             2005-09-07  
  2       李四       3             2005-09-07  
  3       李四       3             2005-09-08  
  .。。。。。。。  
   
   
  Top

4 楼dh20156(风之石)回复于 2005-09-19 19:38:42 得分 100

TRY:  
  Select   a.[员工],Count(b.id)   From   [表1]   a   left   outer   join   [表2]   b   on   a.[员工]=b.[员工]   Where   b.[日期]   between   '2005-1-1'   And   '2005-4-1'   group   by   a.[员工]Top

5 楼dh20156(风之石)回复于 2005-09-19 19:41:10 得分 0

Count(b.id)   -->   IsNull(Count(b.id),0)   As   workcountTop

6 楼jfu(谁动了我的奶酪)回复于 2005-09-19 20:14:34 得分 0

改成;  
  Select   a.[员工],IsNull(Count(b.id),0)   As   workcount   From   [表1]   a   left   outer   join   [表2]   b   on   a.[员工]=b.[员工]   Where   b.[日期]   between   '2005-1-1'   And   '2005-4-1'   group   by   a.[员工]  
  吗?  
  怎么显示全部员工在某段时间内的总共上班时间呢?能不能给出具体点的代码?  
  Top

7 楼dh20156(风之石)回复于 2005-09-20 09:48:57 得分 0

总共上班时间?哦,没注意有一个工作时间字段,SORRY。  
  Select   a.[员工],IsNull(Sum(b.[工作时间]),0)   As   workcount   From   [表1]   a   left   outer   join   [表2]   b   on   a.[员工]=b.[员工]   Where   b.[日期]   between   '2005-1-1'   And   '2005-4-1'   group   by   a.[员工]Top

8 楼hbhbhbhbhb1021(天外水火(我要多努力))回复于 2005-09-20 09:56:15 得分 0

季度时间判断也可以用  
  dadediff函数的Top

9 楼jfu(谁动了我的奶酪)回复于 2005-09-20 10:29:52 得分 0

感谢风之石!对你代码还是不是太明白,好像是只做出了条件选择,能不能把循环显示所有员工工作时间的代码也写一下?呵呵!谢谢!Top

10 楼dh20156(风之石)回复于 2005-09-20 10:47:18 得分 0

最后这条语句就可以将所有员工及他们在3个月里的总工作时间啊。看,我把IsNull(Count(b.id),0)   As   workcount   换成了   IsNull(Sum(b.[工作时间]),0)   As   workcount   ,因为我开始没看到有个[工作时间]的字段。如果你要求所有的那就把Where条件删掉咯。Top

11 楼jfu(谁动了我的奶酪)回复于 2005-09-20 10:56:15 得分 0

那显示的时间是不是rs("workcount")?  
  下面代码对吗?  
  代码:  
  <%  
        dim   conn        
        dim   connstr  
        connstr="DBQ="+server.mappath("1.mdb")+";DefaultDir=;DRIVER={Microsoft   Access   Driver   (*.mdb)};"  
            set   conn=server.createobject("ADODB.CONNECTION")  
            conn.open   connstr    
   
  Set   rs   =   Server.CreateObject("ADODB.Recordset")  
   
  sql="Select   a.[员工],IsNull(Sum(b.[工作时间]),0)   As   workcount   From   [表1]   a   left   outer   join   [表2]   b   on   a.[员工]=b.[员工]   Where   b.[日期]   between   '2005-1-1'   And   '2005-4-1'   group   by   a.[员工]  
  "  
  rs.open   sql,conn,3,3    
  %>  
  <br><%     do   while   not   rs.eof   %>  
  <br><%=rs("员工")%>   共工作   <%=rs("workcount")%>   小时  
  <%  
    rs.movenext  
   
  loop  
   
  %>Top

12 楼dh20156(风之石)回复于 2005-09-20 10:58:46 得分 0

基本上是这样的,你的数据库是ACCESS的,可能有些地方需要去调试一下。Top

13 楼jfu(谁动了我的奶酪)回复于 2005-09-20 10:59:52 得分 0

这里的workcount是虚拟出来的字段,是不是呀?Top

14 楼dh20156(风之石)回复于 2005-09-20 11:03:09 得分 0

As   workcount  
  这么说也可以Top

15 楼jfu(谁动了我的奶酪)回复于 2005-09-20 11:11:37 得分 0

感谢!先给分再说!Top

相关问题

  • 数据库统计
  • 数据库统计问题
  • 关于数据库记录的统计
  • 关于数据库的统计!
  • 关于数据库统计问题
  • 问个数据库统计问题
  • 关于统计数据库值的计算??
  • 如何统计数据库记录值???????急
  • 如何不用数据库来统计下载次数
  • 关于数据库数值统计的问题。

关键词

  • 员工
  • 代码
  • 数据库
  • 字段
  • 时间
  • 表
  • isnull
  • 工作
  • 日期
  • 李四

得分解答快速导航

  • 帖主:jfu
  • dh20156

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo