sql 递归显示所有父节点
1.我先建两个表 一个表示项目及级别 另一个表示项目最后一级中包含内容。两个表的数据如图
CREATE TABLE [dbo].[yq_Project](
[ID] [int] IDENTITY(1,1) primary key,
[cCode] [varchar](32) NOT NULL,
[cPriorCode] [varchar](32) NULL,
[cName] [nvarchar](32) NULL,
[cPersonName] [nvarchar](15) NULL,
[cAddr] [nvarchar](20) NULL,
[cTel] [varchar](20) NULL,
[bHead] [bit] NULL,
seq int )
alter table yq_project add cMemo nvarchar(128) create table yq_Qz_House
(
id int identity(1,1) primary key,
cHuHao varchar(16),
cDongHao varchar(16),
cZuoLuo nvarchar(64),
cJieGou nvarchar(32),
cCengCi varchar(16),
cWeiZhi nvarchar(32),
cChaoXiang nvarchar(16),
iYuanLuo decimal(18,2),
dJunGongShiJian datetime,
cLeiBie nvarchar(16),
iZhuFang decimal(18,2),
iFengBiYangTai decimal(18,2),
iWeiFengYangTai decimal(18,2),
iGongYongFenTan decimal(18,2),
cProCode varchar(32)
)

2.新建一个函数 查找父节点
if exists(select name from sysobjects where name='Prants')
drop function Prants
go
create function Prants(@cCode varchar(32))
returns varchar(100)
as
begin
declare @str varchar(100)
set @str=''
declare @num varchar(32)
select @str= cName from yq_project where cCode=@cCode
if exists(select cPriorCode from yq_project where cCode=@cCode)
begin
select @num=cPriorCode from yq_project where cCode=@cCode
set @str=@str+'/'+dbo.Prants(@num)
end
return @str
end
执行查询
select dbo.Prants(cProCode) cProName,* from yq_Qz_House where dbo.Prants(cProCode) like '%棋赛%'
结果如下图

sql 递归显示所有父节点的更多相关文章
- SQL 递归树 子父节点相互查询
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...
- 转载:SQL 递归树 子父节点相互查询
if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...
- JavaScript之递归查找所有父节点
......data: () => ({ // 数据 dt: [{ id: '1', children: [ { id: '1-1', children: [ { id: '1-1-1', ch ...
- sql递归显示层级数据
;) as varchar(max)) as ssort from Category where ID = '123' union all select t.*, ) as varchar(max)) ...
- SQL根据某一父节点查询所有子节点,无限
;with cte as( select id,ParentCategoryId from Category where id = 17 union all select a.id,a.ParentC ...
- (Elementui) el-tree 中英文过滤以及搜索到父子显示子节点,搜索到子节点显示父节点(filter-node-method)
案例下载:https://gitee.com/tudoumlp/just1.git (vue-ele-demo) 在项目中,会遇到树节点的搜索,中文和英文搜索,以及搜索到父节点匹配的时候同步显示该 ...
- SQL 递归找查所有子节点及所有父节
在SQL的树型结构中,很多时候,知道某一节点的值,需要查找该节点的所有子节点(包括多级)的功能,这时就需要用到如下的用户自定义函数. 表结构如下: ID int Dep_Type int Dep_Co ...
- 在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点)
原文:在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...
- Mysql 实现 向上递归查找父节点并返回树结构
需求:通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构. 如果只有叶子,剔除掉; 如果只有根,只 ...
随机推荐
- 数据结构学习笔记——顺序数组2
接着昨天的数组操作,数组初始化好了,我们要往里面添加元素,可以在尾部追加或者插入,刚开始数组为空,所以先追加 int AppendList(SqList* pArr, ElemType val) { ...
- yield和生成器, 通过斐波那契数列学习(2.5)
实现斐波那契数列的集中方法 返回一个数 def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) a, b = b, a+b n += 1 ...
- VMProtect使用小计【二】 – 加壳查看
Release 我这里使用的是Release的版本,Debug的版本分析没有多少的必要,因为程序发布过之后就是Release的,我们先看一下这个文件 原程序分析 使用OD打开VMProtectDemo ...
- Dubbo入门到精通学习笔记(十六):Keepalived+Nginx实现高可用Web负载均衡
文章目录 Keepalived+Nginx实现高可用Web负载均衡 Keepalived+Nginx实现高可用Web负载均衡 高可用架构篇 Keepalived + Nginx 实现高可用 Web 负 ...
- (转)C#中String跟string的“区别”
string是c#中的类,String是.net Framework的类(在C# IDE中不会显示蓝色) C# string映射为.net Framework的String 如果用string,编译器 ...
- MyBatis-Spring(二)--SqlSessionTemplate实现增删改查
SqlSessionTemplate是个线称安全的类,每运行一个SqlSessionTemplate时,它就会重新获取一个新的SqlSession,所以每个方法都有一个独立的SqlSession,这意 ...
- mysql中explain详解
explain语法 有两种用法: 1.EXPLAIN tbl_name 2.EXPLAIN [EXTENDED] SELECT select_options 为了更好的说明它,我们需要建两张表, ...
- MySQL数据库_目录
MySQL数据库初识 MySQL的库表详细操作 MySQL行(记录)的详细操作 MySQL之单表查询 MySQL之多表查询 Navicat工具.pymysql模块 MySQL之视图.触发器.事务.存储 ...
- ajax中的onload和readychange区别
先补个知识点: readyState 状态码: 0:请求未初始化 1:服务器连接已建立 2:请求已接受 3:请求处理中 4:请求已完成,且响应已就绪 HTTP 状态码: 200 - 服务器成功返回网页 ...
- 小白如何在Windows下使用Redis
一.redis下载按装 Nuget 可以直接下载 redis 将下来的包拷贝到自已需要的目录如我放到桌面文件夹“近期需要\Redis应用\redis-64.3.0.503” 操作 cmd进入命令操作 ...