sql分层查询

时间:2016-10-18 18:20:44

标签: sql oracle group-by

我希望通过先前的命令获得oracle的连接。例如。我有一个项目表和一个由映射表project_employee连接的Employees表。每个员工都参与了一系列项目。现在我希望得到员工与他们的友谊之间的联系。员工是他所在项目的每个项目成员的朋友,他们的朋友也是开始时定义的员工的朋友。例如。项目P1由员工A,B和C完成。项目P2由B和C完成。项目P3由B和D完成。因此,员工A知道B和C(因为他们在P1工作)甚至D(因为A与B一起工作)在P1中,B在P3中与D)一起工作。这应该可以通过先前的查询联系来完成......但我无法掌握如何...

1 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西:

select * 
  from table_of_Employees e  
 where e.employee_id IN (  
(select employee_id/*, level as lvl */
   from project_employee pe 
 connect by NOCYCLE prior project_id = project_id 
                and prior employee_id != employee_id 
  start with employee_id IN (:some_start_employee)
 )