各位大侠: 小弟遇到一个问题,现在有一个页面,功能是查询单位员工的值班记录,在页面中除了有输入查询的时间段的两个文本框外,还有一个所有员工的姓名列表,用户可以从这个姓名列表中勾选要查找的员工,然后输入查询的时间段,再去查询出这些指定的员工在这个时间段内的值班记录。用户在页面上输入查询的开始时间,结束时间,勾选需要查询的员工姓名,现在的问题是,用户每次勾选的员工姓名都是不一样的,我这条select应该怎么写呢,我目前想到的办法只有,先把这个时间段内的所有记录查出来,
select name from ZHIBAN where work_time between start_time and end_time
然后在其中再去一条一条检索用户勾选的员工姓名,这样的话,效率就受到影响了大家有什么办法,谢谢了!!!

解决方案 »

  1.   

    什么页面?
    是想根据页面输入的条件在后面动态累加拼成一个SQL然后发给DB吗?
      

  2.   

    在页面传入员工名字,然后sql的where条件里加个条件
      

  3.   

    select   workstation   from   ZHIBAN  
    where  name=$  and
    work_time   between   $   and   $
    UNION ALL
    select   workstation   from   ZHIBAN  
    where  name=$  and
    work_time   between   $   and   $
    ....界面生成SQL---然后传入。执行。采用分区----季度。超过5页分批执行。name 建立索引。功能可以重定性。设计上的问题。单选界面明细区直接显示。多选翻页明细显示。
      

  4.   

    赞成4楼的,如果这个表的数据量大的话,用In更慢,而且用In启动不了索引~~不过如果你是通过Procedure来实现,建议你把“select   name   from   ZHIBAN   where   work_time   between   start_time   and   end_time ”的结果插入一个Temp Table,这样少一些消耗。然后你只要在这个Temp Table里查员工号就可以了。