现在需求是这样的:
主要涉及到三张表:dept(部门表),hr_empl(职工表),hr_pact(合同表),我想写这个SQL应该只需要用到两张表(合同和职工)
简要说说这三张表用到的字段:
部门表(dept_id,deptname..)
职工表(empl_id,dept_id..)
合同表(pact_id,empl_id..)
关系:部门表同职工表为一对多,职工表同合同表是一对多现在的查询条件是这样的:
  
  需要查询某一个部门下到期的合同,因为一个员工可能签定几份合同,所以员工最后一次合同才列入考虑的情况..请大家帮忙出出注意,写了很久了,但是确实考虑方向不正确..
谢谢..

解决方案 »

  1.   

    合同用的字段就只有一个enddate(到期时间),用于跟当前系统时间比较
      

  2.   

    select max(enddate) from tabel
    where enddate<=to_char(sysdate,'yyyy-mm-dd')
      

  3.   

    这只是查询了在合同表中比当前时间小的合同表中最大的一个时间.其实需要的是查询合同中所有的字段,并且并不是只找一条记录,合同到期的人可能会有很多个.并且需要查询某一个部门下的情况.所以肯定还会用到员工表的(dept_id)..还是非常感谢
      

  4.   

    select e.emp_id,d.deptname ,c.pact_text,c.enddate
           from emp e , dept d, contract c
           where e.dept_id=d.dept_id and e.emp_id=c.emp_id and c.pact_dt in (select max(enddate) from contract where emp_id=c.emp_id and enddate<sysdate)
           
      

  5.   

    改一下
    select e.emp_id,d.deptname ,c.pact_text,c.enddate
           from emp e , dept d, contract c
           where e.dept_id=d.dept_id and e.emp_id=c.emp_id and c.enddate in (select max(enddate) from contract where emp_id=c.emp_id and enddate<sysdate)