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

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、查询结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值