更好的方法来调整查询(避免子查询)oracle

时间:2017-03-27 13:09:54

标签: oracle12c

我有三张桌子

1)***

员工

Empid Empname
       1 R
       2 S
       3 T

2)部门

Deptid empid deptdetlsid
  1 1 1
  1 2 1
  2 1 2

3)deptdetails

Deptdetailsid deptname
1财务
2销售

员工可以属于多个部门。或者可能是尚未分配部门的新加入者。 我正在编写查询以获取所有员工的列表,如果他们的部门是财务回报融资,则填充空值。

我写的查询是

Select empid,empname,deptname from employee,department,
(select deptdetailsid from deptdetails where deptname ='Finance')deptdetails
where Employee.empid =Department.empid(+)
And department.deptdetailsid = deptdetails.deptdetailsid (+)

无论如何都要避免子查询并更有效地做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我不确定为什么你需要避免子查询,但看起来你可能正在寻找另一个左连接...

Select employee.empid, employee.empname, department.deptname  
from employee
   left outer join department on (employee.empid = department.empid)
   left outer join deptdetails on (deptdetails.deptdetailsid = departement.deptdetailsid and deptdetails.deptname = 'Finance');