我有三张桌子
1)***
Empid Empname
1 R
2 S
3 T
Deptid empid deptdetlsid
1 1 1
1 2 1
2 1 2
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 (+)
无论如何都要避免子查询并更有效地做到这一点吗?
答案 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');