web程序的数据库操作语句问题。
select HrEmployee.workId,HrEmployee.emplname,AtdRecord.recdate,AtdRecord.rectime,AtdRecord.equno,EquFinger.pws,rtrim(HrEmployee.workid)+','+AtdRecord.rectime as keyid from HrEmployee inner join AtdRecord on( HrEmployee.cardid=atdrecord.cardno)inner join EquFinger on(atdrecord.cardno=EquFinger.cardno) where rtrim(HrEmployee.workid)+','+AtdRecord.rectime not in(select keyid from DCjilu)
这是,sql语句,作用是在3个表中查数据,有查两个字段的有查一个字段的会得到一个结果,然后将其中两个字段组合成一个新的字段,命名为keyid,然后以这个keyid作为主键和另外一个名字叫做DCjilu的表进行比较,如果前面的结果里面有后面这个表中没有的数据,就显示出来。
我想问的有两点,
1.这个sql语句是不是太长了,这样用在数据库测试没有问题。是不是在程序中用,就没有问题。
2.如果理论上没有问题以后,那么,效率如何了,求高手指导,谢谢
------解决方案--------------------
这懒的。。。好歹排个版啊。。。
SQL code
select HrEmployee.workId, HrEmployee.emplname,
AtdRecord.recdate, AtdRecord.rectime, AtdRecord.equno,
EquFinger.pws,
rtrim(HrEmployee.workid)+','+AtdRecord.rectime as keyid
from HrEmployee inner join AtdRecord on (HrEmployee.cardid=atdrecord.cardno)
inner join EquFinger on (atdrecord.cardno=EquFinger.cardno)
where rtrim(HrEmployee.workid)+','+AtdRecord.rectime not in (select keyid from DCjilu)