栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从节点获取所有最后一级的子级(叶)(层次查询Oracle 11G)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从节点获取所有最后一级的子级(叶)(层次查询Oracle 11G)

我认为,类似的方法应该可以解决问题:

SELECt * FROM(SELECt n.id, n.val, CONNECT_BY_ISLEAF isleaf FROM NODES n        LEFT JOIN RELATION r ON n.id = r.id_childConNECT BY PRIOR n.id = r.id_fatherSTART WITH r.id_father IS NULL)WHERe isleaf = 1

哦,顺便说一句,您无需使用层级查询就可以获取所有叶子。只需从关系表中选择所有节点,这些节点都不是父节点。像这样的东西:

SELECt n.* FROM NODES nWHERe NOT EXISTS (SELECt ID_FATHER FROM RELATION r       WHERe r.id_father = n.id)

为了从指定的节点获取叶节点,只需更改STARTWITH子句中的条件,以从您感兴趣的节点开始反向进行树。例如,此查询将返回id = 5的节点的所有子叶:

SELECt * FROM(SELECt n.id, n.val, CONNECT_BY_ISLEAF isleaf FROM NODES n        LEFT JOIN RELATION r ON n.id = r.id_childConNECT BY PRIOR n.id = r.id_fatherSTART WITH n.id = 5)WHERe isleaf = 1


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414692.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号