smailxiaobai

--建立一个数据表 这可以是你的一个物理表

declare @temp table(
ID varchar(20),
ParentID varchar(20),
Name nvarchar(100))

insert into @temp values(\'A\',\'\',\'分类A\')
insert into @temp values(\'B\',\'\',\'分类B\')
insert into @temp values(\'C\',\'\',\'分类C\')
insert into @temp values(\'D\',\'\',\'分类D\')
insert into @temp values(\'A1\',\'A\',\'分类A1\')
insert into @temp values(\'A2\',\'A\',\'分类A2\')
insert into @temp values(\'A11\',\'A1\',\'分类A11\')
insert into @temp values(\'A12\',\'A1\',\'分类A12\')

select * from @temp

--查询"分类A"下面的所有数据
declare @$result table(
ID varchar(20),
ParentID varchar(20),
Name nvarchar(100),
myLevel int)
declare @Level int
set @Level = 0
insert into @$result select *,@Level from @temp where ID=\'A\'

while(@@rowcount>0)
begin
set @Level = @Level + 1
insert into @$result
select a.*,@Level
from @temp a,@$result b
where a.ParentID = b.ID and myLevel = @Level-1
end
select * from @$result

 

关键就是设一个标志Level进行轮询查找出想要的数据。

查询分类表字段修改成如下:
cataid,catatitle,parentid,orderid


DECLARE @ProductCenterCatalogID int
SET @ProductCenterCatalogID=2;
WITH ACTE(cataid,catatitle,orderid,parentid)
AS
(
SELECT cataid,catatitle,orderid,parentid
FROM cata WHERE cataid=@ProductCenterCatalogID
UNION ALL
SELECT TA.cataid,TA.catatitle,TA.orderid,TA.parentid
FROM cata TA INNER JOIN ACTE TB
ON TA.parentid=TB.cataid
)
SELECT cataid,catatitle,orderid,parentid FROM ACTE order by parentid,orderid



分类:

技术点:

相关文章:

  • 2021-10-08
  • 2021-12-31
  • 2021-07-10
  • 2020-06-28
  • 2021-09-08
  • 2021-09-26
  • 2021-10-08
  • 2021-10-01
猜你喜欢
  • 2021-05-24
  • 2021-12-30
  • 2019-03-04
  • 2022-01-14
  • 2021-12-21
  • 2021-04-10
  • 2021-10-16
相关资源
相似解决方案