目前表有
1.学生刷卡信息表
学号
刷卡日期
刷卡时间
2.上课时间表
早上上课
早上下课时间
下午上课时间
下午下课时间3.学生表
想让学生上课和下课后都刷卡
现在怎么判断学生是迟到,早退,矿课
假如上课时间是 8:00-12:00 14:00-17:00
8:00之前到的是正常
8:00-12:00 是迟到 也有可能是早退 (这两个要如何判断)
12:00之前没有记录的是矿课12:00-14:00之间有可能是早上放学,也有可能是下午正常上课,这个又要如何判断
1.学生刷卡信息表
学号
刷卡日期
刷卡时间
2.上课时间表
早上上课
早上下课时间
下午上课时间
下午下课时间3.学生表
想让学生上课和下课后都刷卡
现在怎么判断学生是迟到,早退,矿课
假如上课时间是 8:00-12:00 14:00-17:00
8:00之前到的是正常
8:00-12:00 是迟到 也有可能是早退 (这两个要如何判断)
12:00之前没有记录的是矿课12:00-14:00之间有可能是早上放学,也有可能是下午正常上课,这个又要如何判断
解决方案 »
- 选取多少条记录,是不是不用能变量?
- 请问在本机上不装sql server 直接使用mdf数据库文件?
- 请教高手.这样的搜索查询,应该怎么做?
- 如何让本地的数据库更安全?
- 可以给数据库名设置个全局变量供引用吗?
- SQL语句问题,详情请进。
- 在触发器中,是否可以依据Inserted/Deleted这两个临时表来判断触发条件是delete、insert还是update?
- sql 中的事务
- where 和 join 的效率哪个高?有没有什么好的性能测试方法或工具?
- 有没有变相的方法在text字段中使用charindex()函数
- 如何判断数据库表中有那些字段名称中有连续2个大写字母的?
- 问一句SQL怎么写
刷卡信息表: 卡号,刷卡时间
上课时间表: 作为基础表维护(上午上课时间,下午上课时间......)基本上就可以了。剩下的就是SQL语句的问题了。
其实SQL虽然比较复杂,但还是能够实现的。
1. 當天有課且有刷卡記錄﹔
2-1. 上午有課,且第一次刷卡的時間在第一節上課時間之后﹔
2-2. 下午有課,且在設定時間段內無刷卡記錄的(如樓上說的卡在13:00-下午上課之前為下午上課時的刷卡時段)﹔早退
1. 當天有課且有刷卡記錄﹔
2-1. 上午有課,且在設定時間段內無刷卡記錄的(如下午下課之后 - 13:00)﹔
2-2. 下午有課,且最后一次刷卡時間在最後一節下課之前﹔礦课
A. 當天有課,無刷卡記錄,礦全部課﹔
或
B. 遲到/早退的礦課:
B-1.上午遲到,第一次刷卡的時間在第N次課下課時間之后,例如上午4節課,則會有4個下課時間,Count Where Min(刷卡時間)>=上午的下課時間
B-2.下午遲到,13:00之后最早一次的刷卡時間在第N次課下課時間之后,Count Where Min(刷卡時間)>=下午的下課時間 And 刷卡時間>=13:00
C-1.上午早退,13:00之前最後一次的刷卡時間在第N次課上課時間之前,Count Where Max(刷卡時間)<=上午的上課時間 And 刷卡時間<13:00
C-2.下午早退,最后一次刷卡的時間在第N次課上課時間之前,Count Where Max(刷卡時間)<=下午的上課時間根據樓主提供的條件,看似有些情況下的結果會顯得比較古怪,比如說7:30刷一次,17:30刷第二次,則會算是上午早退+下午遲到+全天曠課