欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL-根据各人员上下级关系,得到各人员分别处于几级单位,并获取各人员的相关信息

程序员文章站 2024-03-15 17:54:18
...

1、数据表:

现在有一个表,也就是oracle数据库中scott用户下的emp表。
SQL-根据各人员上下级关系,得到各人员分别处于几级单位,并获取各人员的相关信息

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-根据各人员上下级关系,得到各人员分别处于几级单位,并获取各人员的相关信息