您的位置:首页 > 数据库

T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

2017-11-22 11:45 274 查看
-- 查找所有父节点

with tab as

(

 select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=316--子节点

 union all

 select b.Type_Id,b.ParentId,b.Type_Name 

 from

  tab a,--子节点数据集

  Sys_ParamType_V2_0 b  --父节点数据集

 where a.ParentId=b.Type_Id  --子节点数据集.parendID=父节点数据集.ID

)

select * from tab;

 

-- 查找所有子节点

with tab as

(

 select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=1--父节点

 union all

 select b.Type_Id,b.ParentId,b.Type_Name 

 from

  tab a,--父节点数据集

  Sys_ParamType_V2_0 b--子节点数据集 

 where b.ParentId=a.Type_Id  --子节点数据集.ID=父节点数据集.parendID

)

select * from tab;

 

--查找从子节点到定级节点的路径

with tab as

(

 select Type_Id,ParentId,Type_Name,cast(Type_Id as varchar(100)) as fulltypeid

 from SKU_ProductType where Type_Id=423--子节点

 union all

 select

   b.Type_Id,b.ParentId,b.Type_Name,

   cast(a.fulltypeid+','+cast(b.Type_Id as nvarchar(100)) as varchar(100)) as fulltypeid

 from

  tab a,--子节点数据集

  SKU_ProductType b  --父节点数据集

 where a.ParentId=b.Type_Id  --子节点数据集.parendID=父节点数据集.ID

)

select * from tab ;

--------------结果--------------

423    410   蜂花粉      423

410    347   蜂产品      423,410

347    5      营养食品   423,410,347

5        0      健康保健   423,410,347,5

 

 

转载保留:http://write.blog.csdn.net/postedit/7869241
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  T-Sql 递归查询