小编vic*_*cky的帖子

优化收集所有相关项目的查询

下表是我的菜单主​​表,菜单深度不受限制。每个菜单可以有一个子菜单和一个子子菜单等等。

我面临的问题是获取具有相同顶级父级的所有项目。

一种解决方案是在父级不为空时进行循环,第二种解决方案是创建一个具有父级 id 的视图以及所有带有逗号分隔列的子菜单 id。

然后一个选择命令将给出父 ID。我的表如下:

CategoryID  | ParentID    
1           | null        
2           | null        
3           | 1           
4           | 1           
5           | 2           
6           | 2           
7           | 3           
Run Code Online (Sandbox Code Playgroud)

输出应该是

CategoryID  | AllRelatedCategory
1           | 1,3,4,7
2           | 2,5,6
Run Code Online (Sandbox Code Playgroud)

我当前的代码如下。问题是它仅适用于 3 个层次结构。

;with cte as
(
select a.CategoryID col1, convert(varchar, a.CategoryID) col2, a.ParentID
from [dbo].[TB_CATEGORY_MASTER] a where a.ParentID is null

union
select a.CategoryID col1, (convert(varchar, isnull(b.CategoryID,''))) col2, a.ParentID
from [dbo].[TB_CATEGORY_MASTER] a 
left join [dbo].[TB_CATEGORY_MASTER] b on a.CategoryID=b.ParentID …
Run Code Online (Sandbox Code Playgroud)

sql-server

5
推荐指数
1
解决办法
209
查看次数

标签 统计

sql-server ×1