oracle 部门递归
时间: 2024-08-14 21:02:52 浏览: 112
Oracle递归查询
Oracle数据库中的部门递归查询通常用于获取组织架构树形结构的数据,比如查找某个员工所在的上级和所有下级部门。这通常是通过自连接(Self Join)结合WITH RECURSIVE子句来实现的。
例如,假设有一个名为"DEPARTMENTS"的表,包含"ID", "NAME", "PARENT_ID"等字段,你可以编写如下的SQL语句:
```sql
WITH RECURSIVE department_tree (dept_id, name, parent_name) AS (
SELECT d.id, d.name, NULL as parent_name -- 初始化根部部门
FROM departments d
WHERE d.parent_id IS NULL
UNION ALL
SELECT d.id, d.name, dt.name -- 递归查询,选择有父级的部门并添加其父级名称
FROM departments d
JOIN department_tree dt ON d.parent_id = dt.dept_id
)
SELECT * FROM department_tree;
```
这个查询会返回一个结果集,其中每个部门及其所有的直接和间接上级都包含在内。递归部分的关键在于`UNION ALL`后面的子查询,它会不断调用自身,直到没有父级为止。
阅读全文