暂无图片
如何递归查询到每个组织的跟节点
我来答
分享
Edward
2021-12-15
如何递归查询到每个组织的跟节点
暂无图片 10M

需求如下:

1、组织有分级,如何通过查询把组织的最终节点给找到;
数据如下

业务部门表
部门代码 部门名称 上级部门代码 是否明细
1 A 0
1.1 B 1 0
1.1.1 C 1.1 1
1.1.2 AC 1.1 1
1.1.3 AE 1.1 1
1.1.4 ABB 1.1 1
2 E 0
2.1 B 2 0
2.1.1 C 2.1 1
2.1.2 AC 2.1 1
2.1.3 AE 2.1 1
2.1.4 ABB 2.1 1

财务组织表
财务组织代码 财务组织名称 上级财务组织代码 是否明细
SA 集团 NULL 0
1 A SA 1
2 E SA 1

期望的查询结果如下:
组织代码 组织名称 上级组织代码 上级组织名称
1.1.1 C 1 A
1.1.2 AC 1 A
1.1.3 AE 1 A
1.1.4 ABB 1 A
2.1.1 C 2 E
2.1.2 AC 2 E
2.1.3 AE 2 E
2.1.4 ABB 2 E

部门组织的

而用递归得到的结果是
组织代码 组织名称 上级组织代码 上级组织名称
1.1.1 C 1.1 B
1.1.2 AC 1.1 B
1.1.3 AE 1.1 B
1.1.4 ABB 1.1 B
2.1.1 C 2.1 B
2.1.2 AC 2.1 B
2.1.3 AE 2.1 B
2.1.4 ABB 2.1 B

部门表和财务组织表二者编码相同
递归的结果找到的是自身的上级,而不是根节点的上级。
如何能够获取到最上级属于明细的财务组织

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
chengang

我写了mysql 递归实现。你参照一下就写出来了

递归找父节点
https://www.modb.pro/db/110672
递归找子节点
https://www.modb.pro/db/110671

你参见8.0写法即可

暂无图片 评论
暂无图片 有用 0
打赏 0
Edward

我看了,方法与我之前的一样。但是问题是如果是多级目录,递归查询出来的结果是一级一级上查的,而无法找到最明细的部门是那个最顶级公司的。
业务部门表
部门代码 部门名称 上级部门代码 是否明细
1 A 0 0
1.1 B 1 0
1.1.1 C 1.1 1
1.1.2 AC 1.1 1
1.1.3 AE 1.1 1
1.1.4 ABB 1.1 1
1.2 ML 1 1
1.3 RAP 1 1
2 E 0 0
2.1 B 2 0
2.1.1 C 2.1 1
2.1.2 AC 2.1 1
2.1.3 AE 2.1 1
2.1.4 ABB 2.1 1
2.2 BBQ 2 1

财务组织表
财务组织代码 财务组织名称 上级财务组织代码 是否明细
SA 集团 NULL 0
1 A SA 1
2 E SA 1

期望的查询结果如下:
组织代码 组织名称 上级组织代码 上级组织名称
1.1.1 C 1 A
1.1.2 AC 1 A
1.1.3 AE 1 A
1.1.4 ABB 1 A
1.2 ML 1 A
2.1.1 C 2 E
2.1.2 AC 2 E
2.1.3 AE 2 E
2.1.4 ABB 2 E
2.2 BBQ 2 E
查询逻辑是我查询组织代码1,能够找到所有的明细组织
因为涉及数据交换,我需要提供一个因为视图给对方进行查询。
业务逻辑是我提供一个全量的组织表,组织表中存在所有的组织信息给对方输入上级组织ID后进行查询调用。

暂无图片 评论
暂无图片 有用 0
打赏 0
chengang

我有两个方法。一个是向上查的。一个是向下查的。你用向下查的啊。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle数据库能存大约多少数据?
回答 3
已采纳
是整个数据库还是指单表?你如果问的是整个数据库的话,能存多少那不是你的依赖于你的磁盘大小么?你磁盘空间越大,就能存越多数据,对Oracle数据库而言,目前没有上限
Oracle 中央库存目录 (oraInventory)
回答 2
已采纳
D
oracle怎么看某段时间内有没有删除某个数据?
回答 2
已采纳
只能进行logminor的分析,看看归档日志中有没有执行过del的SQL
12c dblink
回答 5
有可能就是sqlnet.ora这个文件里面这两个参数的影响,你可以把这两个参数干掉测试一下。或者把sqlnet.ora重命名试一下。
redo 大小1g 10组 这种会使rman恢复变慢吗
回答 2
已采纳
不会,后续处理redo可以删除,重新添加几组几百m的redo,clear出来就很快
oracleDG备库重启 ,对主库会有影响吗?
回答 2
已采纳
取决于DG的保护模式,DG一共有三种保护模式,如果是最大保护模式,就会有影响。Maximumperformance:最大性能模式默认的保护模式;在不影响主库性能的情况下,提供最高级别的保护模式。Max
数据量1T ,数据保存半年,该如何设置正确的备份策略?
回答 1
备份最主要的问题是保障生产出现问题后可以恢复出来,更何况现在ADG等容灾可以立马切换,备份只最为最后的一道保障,所以不能理解保留半年备份的意义,恢复时间很长的,况且追这么久的增量备份意义不大。提供一种
log file parellel write 等待时间较长
回答 5
目前看是对业务有影响了,超过50ms的日志明显增加。
使用xtts迁移数据报错
回答 8
已采纳
使用v4脚本转换报错,更换为v3后无转换成功。
Oracle的索引组织表有什么意义?
回答 3
已采纳
索引组织表(IndexOrganizedTable,IOT)就是存储在一个索引结构中的表。关系型数据库中的所有表都应有一个主键,而使用堆组织表时,必须为表和表主键上的索引分别留出空间,而IOT不存在主