• 无限极分类查询


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

    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



  • 相关阅读:
    Spinner用法与ListView用法
    ViewPager实现选项卡功能
    android:layout_weight的真实含义
    vb和vb.net事件机制
    go
    挨踢江湖之十一
    蓝桥杯-地铁换乘
    【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用
    Eclipse3.6 添加JUnit源代码
    【分享】如何使用sublime代码片段快速输入PHP头部版本声明
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2321850.html
Copyright © 2020-2023  润新知