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

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)