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



  • 相关阅读:
    mysql 15道语句练习题
    分组查询以及where和having的区别
    java初学复习
    Working with Excel Files in Python
    PIP常用命令
    pip install 提示代理连接失败原因及解决办法
    关于Encode in UTF-8 without BOM
    360极速浏览器Onetab插件存储位置
    使用夜神模拟器录制脚本
    微信小程序开发经验总结
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2321850.html
Copyright © 2011-2022 走看看