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

    From:http://www.cnblogs.com/smailxiaobai/archive/2012/01/13/2321850.html

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

    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
    View Code

    关键就是设一个标志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
    View Code
  • 相关阅读:
    Linux命令-查看进程
    Linux命令-查看内存
    Linux命令---vim
    oracle分页查询按日期排序失败问题
    oracle使用between and边界问题
    给大家介绍一个自我感觉好用的网站
    想学习一下微服务
    oracle获取年、月、日
    mybatis返回map结果集
    修改表中列
  • 原文地址:https://www.cnblogs.com/wangjiahong/p/4635390.html
Copyright © 2011-2022 走看看