SQL-根据各人员上下级关系,得到各人员分别处于几级单位,并获取各人员的相关信息
程序员文章站
2024-03-15 17:54:18
...
1、数据表:
现在有一个表,也就是oracle数据库中scott用户下的emp表。
2、需求:如果KING是一级人员,那么其他人分别是几级人员?并获取每个人对应的上级的姓名及工资情况。
3、分析及解答:
对于这种包含上下级关系的表,可以使用分层查询。把每一行都当作是一个节点,将这种上下级关系转换成树状图,每层表示对应的级别。
-
prior col_name
【返回col_name的父节点的col_name】 -
level
【返回对应层级】 -
connect by 分层条件
【 如何定义上下级关系】 -
start with 根节点满足条件
【以哪一行为根节点】
select
level,
empno,
ename,
sal,
hiredate,
mgr,
(prior ename) as mgr_name, --返回ename上一级的信息
(prior sal) mgr_sal --返回sal上一级的信息
from emp
start with mgr is null --以哪一行为根节点
connect by (prior empno)=mgr --分层条件,定义上下级关系
order by level; --以level升序排列
4、查询结果:
上一篇: SQL Server游标
下一篇: Java——类与对象