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

如何实现快速查询
现在在做一个打卡机的查询程序,有两个表,一个是人员信息表,一个是打卡信息表(一天要打两次卡,要记录两条打开信息),现在需要将两条打卡信息记录到一行,并将所有人员打卡信息进行统一(其中包括未打卡人员),12点之前的打卡信息算为上午打卡时间,12点之后打卡算为下午打卡时间。
表一,人员信息表(卡号,部门,姓名)
create table empInfo
(cardno  varchar(10),dept varchar(20),name varchar(10))
insert into empInfo
select '1000000001','部门一','张三'
union all select '1000000002','部门一','李四'
union all select '1000000004','部门二','王五'
union all select '1000000010','部门四','赵六'

表二,打卡信息(卡号,日期,打卡时间)
create table daka
(PeoNo  varchar(10),KqDate varchar(00),KqTime varchar(10))
insert into daka
select '1000000001','2013-10-08','07:45'
union all select '1000000002','2013-10-08','07:53'
union all select '1000000004','2013-10-08','07:45'
union all select '1000000002','2013-10-08','16:53'
union all select '1000000004','2013-10-08','17:02'


查询结果:
    卡号      姓名      部门      日期      上午打卡时间      下午打卡时间
1000000001    张三     部门一   2013-10-08     07:45
1000000002    李四     部门一   2013-10-08     07:53             16:53
1000000004    王五     部门二   2013-10-08     07:45             17:02
1000000010    赵六     部门四   2013-10-08


由于人员比较多,请问如何能高效快速的得出查询结果?

如何能高效快速合并打卡机采集的信息

------解决方案--------------------
create table empInfo
(cardno  varchar(10),dept varchar(20),name varchar(10))
insert into empInfo
select '1000000001','部门一','张三'
union all select '1000000002','部门一','李四'
union all select '1000000004','部门二','王五'
union all select '1000000010','部门四','赵六'

create table daka
(PeoNo  varchar(10),KqDate varchar(10),KqTime varchar(10))
insert into daka
select '1000000001','2013-10-08','07:45'
union all select '1000000002','2013-10-08','07:53'
union all select '1000000004','2013-10-08','07:45'
union all select '1000000002','2013-10-08','16:53'
union all