`
blueskylan
  • 浏览: 98714 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

根据子节点查找所有父节点

    博客分类:
  • db2
 
阅读更多
-- 方法一:通过父节点关联(递归)
with test(fid, fname, fparentid) as (
  values('01', 'test01', '0')
  union
  values('0101', 'test0101', '01')
  union
  values('010101', 'test010101', '0101')
  union
  values('0102', 'test0102', '01')
  union
  values('02', 'test02', '0')
),
temp(fid, fname, fparentid) as (
select fid, fname, fparentid from test where fname = 'test0101'
union all
select parent.fid, parent.fname, parent.fparentid from temp as child, test as parent where child.fparentid = parent.fid
)
select distinct fid, fname, fparentid from temp


-- 方法2:通过fpath关联
with test(fid, fname, fparentid, fpath) as (
  values('01', 'test01', '0', '0,01')
  union
  values('0101', 'test0101', '01', '0,0101')
  union
  values('010101', 'test010101', '0101', '0,0101,010101')
  union
  values('0102', 'test0102', '01', '0,0102')
  union
  values('02', 'test02', '0', '0,02')
)
-- 根据条件获取父
select parent.fid, parent.fname, parent.fpath
from test as parent, ( select fid, fpath from test where fname = 'test0101' ) as child
where left( child.fpath, length(parent.fpath) ) = parent.fpath
-- union会去掉相同的记录,union all就会有重复的记录
union
-- 根据条件获取子
select child.fid, child.fname, child.fpath
from test as child, ( select fid, fpath from test where fname = 'test0101' ) as parent
where left(child.fpath,length(parent.fpath)) = parent.fpath
分享到:
评论

相关推荐

    根据当前节点获取所有父节点信息

    根据当前节点获取所有父节点信息(18代)SQL根据当前节点递归遍历获取所有父节点信息,短短的SQL可以解决复杂的问题

    根据父节点找所有子节点数据.zip

    本案例提供了一个Java工具类,用于根据父节点递归地查找并返回所有子节点的数据。 首先,我们要理解什么是树查询。在树形结构中,每个节点可能有零个或多个子节点,而根节点没有父节点。树查询通常涉及遍历这些节点...

    SQL sever 中递归查找子节点和父节点

    为了实现递归查找父节点,我们可以创建一个函数 `f_getParent`,该函数接受一个参数 `@id`,表示要查找的节点的编号。函数将返回该节点所有的父节点。 ```sql CREATE FUNCTION f_getParent(@id int) RETURNS @re ...

    删除数据库表中的父节点以及其子节点

    这个存储过程首先将指定的父节点ID存入临时表`childQueue`,然后在循环中不断删除队列中的节点并查找其子节点,将子节点加入队列,直到队列为空。这样就确保了所有子节点都被删除,最后父节点也被安全移除。 当然,...

    树父节点递归获取树子节点

    本篇文章将详细介绍如何在Java中使用递归来实现从父节点获取树的所有子节点。 首先,我们需要定义一个树节点类,通常包含两个属性:节点值和子节点列表。例如: ```java public class TreeNode { private int ...

    js实现获取列表中某个(些)节点所有子节点和直系父节点数据

    本主题探讨的是如何高效地实现一个功能,即获取列表中特定节点的所有子节点和直系父节点数据。这一过程涉及到递归、循环算法以及DOM节点的操作。 首先,我们需要理解JavaScript中的DOM(Document Object Model)...

    C#搜索TreeView子节点,保留父节点的方法

    当需要在`TreeView`中搜索特定的子节点并保留其父节点时,通常涉及到对`TreeView`节点的操作,包括遍历、查找和删除。本文将详细讲解如何在C#中实现这个功能,并给出两种不同场景下的示例代码,分别针对传统的...

    javascript获取指定节点父节点、子节点的方法.pdf

    5. `parentObj.getElementsByTagName(tagName)`:在父节点的所有子节点中查找指定类型的子节点,返回一个数组。 通过临近节点获取元素: 1. `neighbourNode.previousSibling`:获取当前节点的前一个相邻节点。 2. ...

    js 递归json树实现根据子id查父id的方法分析

    最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找节点 的父节点及父节点。 对于未知层级的树状数据,用for循环是无法实现的,因为不知道要...

    asp.net treeview选中父节点自动选中子节点

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要讲述的是如何在ASP.NET TreeView控件中实现一种功能:即当用户选中一个父节点时,该父节点下的所有子节点也会被自动选中;反之,如果用户取消选中...

    MySQL递归查询树状表的子节点、父节点具体实现

    为了遍历树状表的子节点和父节点,我们需要借助其他策略,例如存储过程。 这里介绍的解决方案是通过创建两个自定义函数——`getChildList`和`getParentList`——来实现递归查询。这两个函数都是基于WHILE循环和`...

    erchashu.c.zip_父节点

    3. 查找父节点的函数,可能通过递归或非递归方式实现,根据给定的节点找到其父节点。 4. 查找子节点的函数,返回指定节点的左子节点或右子节点。 5. 广度优先遍历的函数,使用队列存储待访问节点,并按照层次顺序...

    查找二叉树子结点的父结点的递规算法

    通过这种方式,算法能够逐层深入地遍历二叉树的所有节点,直到找到目标子节点的父节点为止。 #### 应用场景与扩展 - **应用场景**:这种递归算法可以应用于多种场景,如文件系统中的目录结构、数据库中的层次关系...

    sql server递归子节点、父节点sql查询表结构的实例

    本文将深入探讨如何利用递归查询来获取子节点和父节点的信息。 一、查询当前部门下的所有子部门 在SQL Server中,可以使用Common Table Expression(CTE)结合递归来实现这个功能。`deptTab`是存储部门信息的表,...

    jquery的父、子、兄弟节点查找,节点的子节点循环方法

    jQuery.children(expr) //查找所有子元素,只会找到直接的孩子节点,不会返回所有子孙 jQuery.contents() //查找下面的所有内容,包括节点和文本。 jQuery.prev() //查找上一个兄弟节点,不是所有的兄弟节点 ...

    js查找父节点的简单方法

    js查找父节点的简单方法 js查找父节点的简单方法是指使用javascript来查找当前节点的父节点,这种方法可以应用于各种基于javascript的项目中。在本文中,我们将探讨一个查找父节点的简单方法,并对该方法的实现原理...

    C# LinqXML访问指定节点的父节点

    3. **获取父节点**:一旦我们找到了指定的节点,就可以使用`Parent`属性来获取其父节点,或者使用`Ancestors()`方法来获取所有祖先节点。如果只想获取直接的父节点,代码如下: ```csharp XElement parentNode = ...

    Delphi遍历某一节点下所有叶节点

    - 如果当前节点不是叶节点且 `findChild` 为 `false`,则根据是否有兄弟节点决定是否回溯到父节点或继续遍历兄弟节点。 3. **递归终止条件**: - 当遍历到叶节点时。 - 当遍历到起始节点且不需要继续搜索子节点...

Global site tag (gtag.js) - Google Analytics