****************************查询开始******************************
--SQL2005 使用CTE
DECLARE @ VARCHAR(10)
SET @='栾川县'
;WITH XiaoAi AS
(
SELECT id FROM tb WHERE [name]=@
UNION ALL
SELECT t.id FROM XiaoAi AS a INNER JOIN tb AS t ON a.id=t.pid
)
SELECT t.* FROM XiaoAi AS a LEFT JOIN tb AS t ON t.id=a.id
--SQL 2000 使用函数
IF OBJECT_ID('dbo.XiaoAi') IS NOT NULL DROP FUNCTION dbo.XiaoAi
GO
CREATE FUNCTION dbo.XiaoAi(@ VARCHAR(20))
RETURNS @t TABLE(id VARCHAR(3), pid VARCHAR(3), [name] VARCHAR(20),Level INT)
AS
BEGIN
DECLARE @level INT
SET @level=1
INSERT INTO @t SELECT *,@level FROM tb WHERE [name]=@
WHILE(@@ROWCOUNT>0)
BEGIN
SET @level=@level+1
INSERT INTO @t SELECT t.*,@level FROM tb AS t,@t AS a WHERE a.id=t.pid AND a.level=@level-1
END
RETURN
END
GO
--调用函数
SELECT id, pid,[name] from dbo.XiaoAi('栾川县')
--****************************查询结束*************************************
/*
2、查询指定节点及其所有父节点
如:已知 栾川县
得到以下结果
id pid name
---- ---- ----------
001 NULL 河南省
002 001 洛阳市
004 002 栾川县
*/
----------------------测试开始-------------------------------------------------
DECLARE @s VARCHAR(10)
SET @s='栾川县'
SELECT id, pid,[name] INTO # FROM tb WHERE [name]=@s
WHILE @@ROWCOUNT>0
BEGIN
INSERT INTO # SELECT t.id, t.pid,t.[name] FROM tb AS t
INNER JOIN # AS a ON t.id=a.pid AND t.id NOT IN(SELECT ID FROM #)
END
SELECT * FROM # ORDER BY ID
-----------------------测试结束-------------------------------------------------
相关推荐
SQL Server 中递归查找子节点和父节点 在关系数据库管理系统中,特别是在 SQL Server 中,递归查找子节点和父节点是一种常见的操作。这种操作可以应用于树形结构的数据存储和查询中,例如组织结构、目录结构、分类...
本文将深入探讨如何利用递归查询来获取子节点和父节点的信息。 一、查询当前部门下的所有子部门 在SQL Server中,可以使用Common Table Expression(CTE)结合递归来实现这个功能。`deptTab`是存储部门信息的表,...
要删除一个父节点及其所有子节点,我们需要进行深度优先搜索(DFS)或广度优先搜索(BFS)。这里我们采用广度优先搜索,因为这种方式可以确保先删除所有的子节点,然后再删除父节点,避免了因删除父节点导致的子节点...
根据当前节点获取所有父节点信息(18代)SQL根据当前节点递归遍历获取所有父节点信息,短短的SQL可以解决复杂的问题
标题中的“根据子节点的金额向上汇总所有父节点的金额”是一个典型的树形结构数据处理问题,常见于组织架构、账目统计或者数据库层次结构的数据分析。这个问题涉及到的知识点包括但不限于: 1. **树形结构**:在...
在数据库管理和应用开发中,经常需要查询某一特定节点下的所有子节点信息。例如,在组织结构、产品分类等层级数据管理中,我们需要获取某个父级分类的所有子分类,包括直接子分类以及其所有的后代分类。本篇文章将...
为了遍历树状表的子节点和父节点,我们需要借助其他策略,例如存储过程。 这里介绍的解决方案是通过创建两个自定义函数——`getChildList`和`getParentList`——来实现递归查询。这两个函数都是基于WHILE循环和`...
这个查询稍微复杂一些,需要先找出节点的父节点,然后查询该父节点的兄弟节点。 9. **查询一个节点的父节点的同级节点**: 与查询兄弟节点相似,但需要找出父节点的同级节点。 10. **名称要列出名称全部路径**:...
- 当用户选中或取消选中某个节点时,可以通过JavaScript来触发相应的事件处理器,根据当前选中状态来进行父节点和子节点的选择状态更新。 ```javascript function CheckEvent() { var objNode = event....
- **递归部分**:接下来,我们定义了递归部分,通过内部连接将`jaf_dept_structure`表与CTE本身相连,找到所有父节点对应的子节点。这里的关键在于`on t.parentid = c.deptid`这一条件,它确保了我们能够正确地向上...
要排除各级父节点,可以使用子查询和`NOT EXISTS`: ```sql SELECT t.* FROM SYS_ORG t WHERE NOT EXISTS (SELECT 1 FROM SYS_ORG s WHERE s.parent_id = t.id) START WITH id = '101' CONNECT BY parent_id ...
删除父节点下的子节点 存储过程版 新手需多看几遍 create function dbo.aa(@i int) returns @t table(ml_id int,parent_id int,level int) as begin declare @level int set @level=0 insert into @t ...
- 解释: 这条SQL语句用于查找所有顶级父节点,即`parent_id`为空的记录。这些通常是树的根节点。 2. **查找一个节点的直属子节点**: - SQL语句: `SELECT * FROM test_tree t WHERE t.parent_id = 1;` - 解释: ...
在MySQL中,实现树状所有子节点的查询并非像Oracle那样可以直接使用Hierarchical Queries和`CONNECT BY`语句。然而,尽管MySQL不直接支持这样的功能,我们仍然可以通过其他方法来达到相同的效果。以下将详细介绍几种...
在给定的场景中,我们需要根据一个特定的节点ID查询出该节点及其所有子节点,并将这些结果存储在一个临时表中。以下是实现这一目标的详细步骤和相关知识点: 1. **CTE(公共表表达式)**: 公共表表达式(Common ...
本文将探讨如何使用SQL函数实现三种常见的递归查询:找到所有子节点、查找所有父节点以及面包屑导航数据。我们将通过一个名为`Region`的示例表来说明这些操作。 首先,我们需要一个基础的表结构,如`Category`或`...
例如,使用`LISTAGG`函数可以将同一父节点下的所有子节点ID聚合在一起,形成一个字符串: ```sql SELECT parent_id, LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) AS child_ids FROM table_name WHERE parent_...
1. **节点的父节点信息查询** 要获取某个节点(如员工)的父节点(上级)信息,可以使用递归方法。SQL Server 2000引入了用户定义函数(UDF),这使得实现递归成为可能。下面是一个名为`GetManager`的UDF示例,它...
本示例将深入探讨如何在SQL中处理这类数据,包括如何根据父节点查找所有子节点,以及如何指定子节点找出所有父节点。 首先,让我们假设有一个名为`employees`的表,它包含了员工的ID(`id`)、员工的名字(`name`)...