oracle 人员信息表中存了人员信息以及人员的上级,如何查出自己的所有下属,这里的下属包括下属的下属
时间: 2024-09-24 16:23:01 浏览: 27
Oracle EBS 人力资源主要表结构
Oracle数据库中查询一个员工的所有下属,通常会涉及到递归查询或者使用自连接(Self Join)。假设有一个名为`Employees`的表,包含字段如`EmployeeID`, `ManagerID`, 和`EmployeeName`,其中`ManagerID`表示直接上级的`EmployeeID`。为了获取某员工及其所有下属,可以采用以下SQL查询:
```sql
WITH RECURSIVE hierarchy AS (
SELECT e.EmployeeID, e.EmployeeName, NULL AS ParentEmployeeID
FROM Employees e
WHERE e.ManagerID = :your_employee_id -- 输入你的上级ID
UNION ALL
SELECT e.EmployeeID, e.EmployeeName, h.ParentEmployeeID
FROM Employees e
JOIN hierarchy h ON e.ManagerID = h.EmployeeID
)
SELECT * FROM hierarchy;
```
在这个查询中:
- 第一行(基础行)选择拥有指定`ManagerID`的员工作为起始点。
- `UNION ALL`后的一行通过递归查询(`JOIN hierarchy ON ...`)加入当前层级下的所有员工,将他们的上级的`EmployeeID`作为`ParentEmployeeID`。
执行这个查询后,你可以得到`:your_employee_id`的所有直接下属及其下属列表。
阅读全文