`

树形查询

阅读更多
[size=medium][size=medium]在表BOM里有两个字段,形式如下: 
(上届)  (下届) 
中国        湖北省 
湖北省      武汉市 
武汉市      洪山区 
中国        广东省 
广东省      深圳市 


我想通过给出的已知节点查找出其根节点,比如我知道“武汉市”我能查询出它对应的根节点“中国” [/size][/size]


/*
标题:查询指定节点及其所有父节点的函数
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 
时间:2008-05-12
地点:广东深圳
*/

create table tb(id varchar(3) , pid varchar(3) , name varchar(10))
insert into tb values('001' , null  , '广东省')
insert into tb values('002' , '001' , '广州市')
insert into tb values('003' , '001' , '深圳市')
insert into tb values('004' , '002' , '天河区')
insert into tb values('005' , '003' , '罗湖区')
insert into tb values('006' , '003' , '福田区')
insert into tb values('007' , '003' , '宝安区')
insert into tb values('008' , '007' , '西乡镇')
insert into tb values('009' , '007' , '龙华镇')
insert into tb values('010' , '007' , '松岗镇')
go

--查询指定节点及其所有父节点的函数
create function f_pid(@id varchar(3)) returns @t_level table(id varchar(3))
as
begin
  insert into @t_level select @id
  select @id = pid from tb where id = @id and pid is not null
  while @@ROWCOUNT > 0
  begin
    insert into @t_level select @id select @id = pid from tb where id = @id and pid is not null
  end
  return
end
go

--调用函数查询002(广州市)及其所有父节点
select a.* from tb a , f_pid('002') b where a.id = b.id order by a.id
/*
id   pid  name       
---- ---- ---------- 
001  NULL 广东省
002  001  广州市

(所影响的行数为 2 行)
*/

--调用函数查询003(深圳市)及其所有父节点
select a.* from tb a , f_pid('003') b where a.id = b.id order by a.id
/*
id   pid  name       
---- ---- ---------- 
001  NULL 广东省
003  001  深圳市

(所影响的行数为 2 行)
*/

--调用函数查询008(西乡镇)及其所有父节点
select a.* from tb a , f_pid('008') b where a.id = b.id order by a.id
/*
id   pid  name       
---- ---- ---------- 
001  NULL 广东省
003  001  深圳市
007  003  宝安区
008  007  西乡镇

(所影响的行数为 4 行)
*/

drop table tb
drop function f_pid


分享到:
评论

相关推荐

    树形查询带记录数量

    在IT领域,树形查询是一种常见且重要的数据结构操作,特别是在数据库管理和数据分析中。当我们谈论“树形查询带记录数量”时,我们指的是在数据库查询过程中,不仅获取数据的层级结构,同时也计算并显示每个层级节点...

    mysql 树形结构查询

    mysql 树形结构查询 MySQL 树形结构查询是指使用存储过程来实现 MySQL 数据库中的树形结构查询。这种查询方式可以高效地查询树形结构的数据,并且可以根据需要设置递归深度。 MySQL 中的树形结构查询可以使用存储...

    oracle树形查询

    最近项目中遇到,开始不太了解,现在分享一下,希望可以帮助其他人

    springboot+mybatis-plus+gradle+mysql+swagger基础增删改查、树形查询

    本项目基于一系列技术栈,包括Spring Boot、MyBatis Plus、Gradle、MySQL和Swagger,实现了一个基础的增删改查(CRUD)功能,并提供了树形查询的能力。下面将详细介绍这些技术及其在项目中的应用。 **1. Spring ...

    mybatis 父子级树形结构查询

    本文将深入探讨如何使用MyBatis进行父子级树形结构查询,避免繁琐的代码拼接。 首先,我们了解MyBatis的`collection`标签。在MyBatis的映射XML文件中,`<collection>`标签用于表示一对多的关系,它允许我们在一次...

    Oracle查询树形结构

    - 网络分析:在社交网络或网络拓扑分析中,树形查询能够帮助找出节点之间的层级连接。 需要注意的是,在使用START WITH...CONNECT BY PRIOR进行查询时,需要考虑到循环引用的问题,因为这样的查询结构容易出现无限...

    jpa单表递归树形结构实现

    通过定义自关联的实体类、配置JPA仓库以及编写适当的查询方法,可以轻松地实现对树形数据的CRUD操作。在实际应用中,还需考虑性能优化,如分页加载、懒加载等策略,以避免大量数据导致的效率问题。

    用递归实现C#树形结构

    在C#编程中,树形结构是一种常见的数据结构,它模拟了自然界中的树状关系,如文件系统、组织架构或阶层关系等。本篇将详细探讨如何使用递归方法来实现C#中的树形结构。 首先,理解树形结构的基本概念至关重要。在...

    Oracle递归树形结构查询功能

    Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...

    【原创】oracle树形结构查询,层次查询,hierarical retrival

    Oracle树形结构查询,层次查询,hierarchical retrieval Oracle中的树形结构查询,也被称为层次查询或hierarchical retrieval,是一种获取树形结构数据的方法。这种方法可以将数据组织成树形结构,具有层次关系的...

    从数据库获取显示为树形菜单

    综上所述,实现从数据库获取并显示为树形菜单的过程包括:通过SQL查询从数据库获取菜单数据,使用递归方法构建菜单的层级结构,最后在WebForm中利用TreeView控件展示树形菜单。这个过程中需要注意性能优化,比如避免...

    MySql 中查询树形结构的全部子项列表 Function

    本文将深入探讨如何在MySQL中查询树形结构的全部子项列表,结合提供的`MySql_Link_Function.sql`文件,我们将探讨一种有效的方法来实现这一功能。 首先,树形结构在数据库中的存储通常采用自引用的方式,即每个节点...

    树形结构设计总结java demo

    在IT领域,特别是软件开发中,树形结构是一种常见的数据结构,它被广泛应用于各种场景,如文件系统、计算机科学中的编译器、图形用户界面的菜单系统等。本篇文章将深入探讨“树形结构设计”在Java环境下的实现,并...

    部分普通sql查询在hive中的实现方式

    ### 部分普通SQL查询在Hive中的实现方式 Hive是一款基于Hadoop的数据仓库工具,能够对存储在Hadoop文件系统中的数据集进行数据提取、转换、加载(ETL),这是一种可以简化MapReduce编程的工具。由于Hive的设计初衷...

    Android之仿手机树形主键功能.zip

    通过`parent_id`字段,我们可以构建父子关系,实现树形查询。 4. 数据展示与交互 在UI层面,Android提供了多种控件和工具来展示树形结构,如ExpandableListView、RecyclerView配合自定义适配器等。用户可以通过点击...

    ibatis下oracle树查询

    在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...

    java-根据过滤条件显示树形结构

    在Java编程中,构建和显示树形结构是一种常见的任务,特别是在数据表示、文件系统操作或者组织复杂的对象层次结构时。本篇文章将详细讲解如何在Java中根据过滤条件来实现这一功能,同时也会提及所需的jar包。 首先...

    java动态树形菜单与分页

    后端服务器(通常基于Spring MVC或Struts2框架)负责处理请求,查询数据库并返回JSON格式的数据,前端JavaScript将这些数据转换为树形结构展示在页面上。在给定的项目中,可能包含了这样的前后端交互逻辑和数据库...

    基于JAVA建立树形结构的算法优化.pdf

    一个高效地在内存中构建完整树形结构的算法应该能够减少数据加载次数,避免频繁的数据库查询。将树形结构需要的数据一次性加载到内存中,然后在内存中构建树形结构的所有节点,这样既减轻了数据库的压力,也能够提升...

Global site tag (gtag.js) - Google Analytics