求一数据库语句,请高手们帮帮忙

neusoftyuanhao 2011-10-08 11:46:37
我的数据库结构语句是这样的
create table kaoqing(
kaoqingid int identity(1,1),
username varchar(9) not null,
userip varchar(16) not null,
ktime datetime default(getdate())
)
create table banci(
banciid int,
name varchar(12) not null,
stime time(7) not null,---上班时间08:00.下班时间17:00
xtime time(7) not null,---一天2次卡,中午休息不打卡.
)
create table kao(
kaoid int identity(1,1),
username varchar(12),
userip varchar(16),
ktime datetime,
kaostate varchar(15)---考勤状态,分为迟到,正常,早退.
)

考勤表记录用户名,ip,考勤时间, 班次这个表记录不同的人的不同上下班时间,两个表中的username跟name是关联的.我的意图是,怎么在kaoqing这个表一插入数据时,数据库自动在考勤时间跟班次表中的时间想匹配判断考勤状态是正常还是早退 然后在kao这个表记录一条记录.对这个没什么思路.实在搞不出.请大大们帮帮手.没什么分了,不好意思.
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
q465897859 2011-10-09
  • 打赏
  • 举报
回复
判断 第一次打卡时间小于上班时间则是迟到 第二次上班时间小于下班时间 就是早退 否则就是正常
--小F-- 2011-10-09
  • 打赏
  • 举报
回复
有的话其实就是简单的case when 判断吧
--小F-- 2011-10-09
  • 打赏
  • 举报
回复
考情表和班次表没有关联么?
neusoftyuanhao 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 koumingjie 的回复:]

在kaoqing表中建立insert触发器,用触发器控制‘kaoqing这个表一插入数据时,数据库自动在考勤时间跟班次表中的时间想匹配判断考勤状态是正常还是早退 然后在kao这个表记录一条记录’
[/Quote]
肯定要用触发器,现在我需要的是怎么根据考勤时间和班次中规定的上班时间来判断考勤的状态.
koumingjie 2011-10-09
  • 打赏
  • 举报
回复
在kaoqing表中建立insert触发器,用触发器控制‘kaoqing这个表一插入数据时,数据库自动在考勤时间跟班次表中的时间想匹配判断考勤状态是正常还是早退 然后在kao这个表记录一条记录’
neusoftyuanhao 2011-10-09
  • 打赏
  • 举报
回复
判断语句写好了,我把表结构也改了
create table kaoqing(
kaoqingid int identity(1,1),
username varchar(9) not null,--网页自动获取并插入数据
userip varchar(16) not null,--网页自动获取并插入数据
ktime datetime default(getdate()),
kaostate varchar(15)---考勤状态,分为迟到,正常,早退.由数据库判断
)
create table banci(
banciid int,
name varchar(12) not null,
stime time(7) not null,---上班时间08:00.下班时间17:00
xtime time(7) not null,---一天2次卡,中午休息不打卡.
)


判断语句为:
SELECT
CASE
WHEN CONVERT(varchar(100), ktime, 24)<=CONVERT(varchar(10),stime,120)and CONVERT(varchar(100), ktime, 24) between '07:00:00' And CONVERT(varchar(10),stime,120) THEN '正常上班'
WHEN CONVERT(varchar(100), ktime, 24)<CONVERT(varchar(10),xtime,120)and CONVERT(varchar(100), ktime, 24) between CONVERT(varchar(10),stime,120) And CONVERT(varchar(10),xtime,120) THEN '迟到'
WHEN CONVERT(varchar(100), ktime, 24)>CONVERT(varchar(10),xtime,120) THEN '正常下班'
ELSE null END kaoqing,kaoqingid,stime,ktime,xtime,username FROM kaoqing,banci where kaoqing.username=banci.name

我的考勤表除了考勤状态外其它的都是网页自动获取数据并插入数据库的.我的想法是写一个触发器在kaoqing这个表插入数据时,根据判断语句,更新考勤状态.请高手们帮个忙,支支招.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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