zoukankan      html  css  js  c++  java
  • 无限极分类查询

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

    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



  • 相关阅读:
    ubuntu14.04恢复系统默认中文字体
    Mcafee两个Mac版本之间的区别
    关于Windows系统防火墙
    诺顿序列号获取方法
    如何将软件限制策略发挥大作用
    BootCamp支持软件4/5
    Android系统分区理解及分区目录细解
    给Adobe Reader添加书签功能
    PHP面向对象之旅:static变量与方法
    INSERT IGNORE 与 INSERT INTO的区别
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2321850.html
Copyright © 2011-2022 走看看