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