• 无限极分类查询


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

    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



  • 相关阅读:
    002使用代码和未经编译的XMAL文件创建WPF程序
    001使用代码创建WPF应用程序
    制作地图PPT
    数据库基本知识学习(sql server)
    虚拟现实技术对人类是福还是祸?
    计算机中的数学
    软件架构
    extracts
    bootstrap
    omron欧姆龙自动化应用
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2321850.html
Copyright © 2020-2023  润新知