oracle 子叶节点,SQL 确认叶子节点、分支节点和根节点

SQL 确认叶子节点、分支节点和根节点,你想确定给定的一行数据是哪种类型的节点:叶子节点、分支节点还是根节点。对于本实例而言,叶子节点代表不是管理者的员工。分支节点表示管理者的员工,同时他也拥有自己的上级管理者。根节点表示没有上级管理者的员工。

SQL 确认叶子节点、分支节点和根节点 问题描述

你想确定给定的一行数据是哪种类型的节点:叶子节点、分支节点还是根节点。对于本实例而言,叶子节点代表不是管理者的员工。分支节点表示管理者的员工,同时他也拥有自己的上级管理者。根节点表示没有上级管理者的员工。你希望通过返回 1(TRUE)或 0(FALSE)来反映每一行在层次关系中的状态。你希望返回如下所示的结果集。

SQL 确认叶子节点、分支节点和根节点 解决方案

EMP 表是树形结构,而不是递归层次结构(recursive hierarchy),因为根节点的 MGR 值是 Null。认识到这一点很重要。如果 EMP 表是递归层次结构,那么根节点将会指向自身(即员工 KING的 MGR 值将等于他的 EMPNO)。我认为这是违反常理的,因而指定根节点的 MGR 值为 Null。对于 Oracle 的 CONNECT BY 子句和 DB2/SQL Server 的 WITH 子句而言,树形结构处理起来更容易,甚至可能比递归层次结构的处理效率更高。如果必须要处理递归层次结构,并且要使用 CONNECT BY 或 WITH 子句,那么就要小心了:我们可能会掉进死循环里。为防止陷入递归层次结构设置的陷阱,需要编写额外的代码小心地避开它。

DB2、PostgreSQL、MySQL 和 SQL Server

使用 3 个标量子查询,针对每一种节点类型分别计算出正确的“布尔”值(1 或 0)。

Oracle

对于 Oracle Dat

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值