无限极分类查询

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

关键就是设一个标志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

时间: 2024-10-29 03:47:55

无限极分类查询的相关文章

PHP无限极分类详谈

当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了. 比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了. id    name          pid      sort1     PHP           0       1

PHP无限极分类的实现(不使用递归)

无限极分类在开发中经常使用,例如:部门结构.文章分类.无限极分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在<无限级分类实现思路>一文中介绍了几种常见的实现方法,各有利弊.其中“改进前序遍历树”数据结构,便于输出和查询,但是在移动分类和常规理解上有些复杂. 2.数据结构 id fid title 1 0 中国 2 1 江苏 3 1 安徽 4 8 江阴 5 3 芜湖 6 3 合肥 7 3 蚌埠 8 2 无

C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): 1 /// <summary> 2 /// 无限极节点类 3 /// </summary> 4 public class AdminUserTree 5 { 6 /// <summary> 7 /// 节点信息 8 /// </summary> 9 public int

创建无限极分类树型结构

先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类信息(id:该分类的ID值,cate_name:该分类的名称,pid:父ID,sorts:为显示标题顺序排序做准备,可不写.) 1 public function cate_display() 2 { 3 $cate = D('Cate'); 4 $field = array('id','cate_

thinkphp5.0无限极分类及格式化输出

首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的pid是1,而中国的id为1,所以贵州的父节点是中国,至于type字段,可以不用管,只是我自己的项目需要. 可以发现,着写数据在数据表中是无序的,并没有我们想象中的层次结构分明并且可读性很好. 那么,当使用无限极分类之后数据的输出是怎样的呢?如下: 这样就能够很清晰的看出他们的层次结构了,那么这样的效果在thi

PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂

当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了. 比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了. id    name          pid      sort1     PHP           0   

无限极分类 获取顶级id

<?php $sql = "select id, pid from tablename "; // 查询后 将结果处理成 如下数组格式 $arr = [ // id => pid 1 => 0, // 省略... 6 => 1, // 省略... 12 =>6 ]; // 建议将这数组缓存起来 $id = 12; while($arr[$id]) { $id = $arr[$id]; } echo $id; // 1 1.其实无限极分类原理清晰后就会发现,

【laravel54】关于用户权限认证RBAC和无限极分类

1.权限认证方面: https://packagist.org/packages/spatie/laravel-permission 用户认证 HTTP本身是无状态,通常在系统交互的过程中,使用账号或者Token标识来确定认证用户: 配置文件解读 return [ 'defaults' => [ 'guard' => 'web', ... ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => '

DotNet菜鸟入门之无限极分类(一)设计篇

写这个教程的原因,是因为,无限极分类,在许多项目中,都用得到.而对于新手来说,不是很好理解,同时,操作上也有一些误区或者不当之处.所以我就斗胆,抛砖引玉一下,已一个常见的后台左侧频道树为例子,讲解一下剖析一下无限极分类的实战操作. 既然是写给菜鸟的,那么我就不话结构图了,直接文字+代码来说明吧. 正文 无限极分类的关键就在于数据库设计时,进行了父类编号的记录,从而把所有的分类,链接了起来,成为一个链表样式的结构. 这次我要讲的无限极分类设计如下: (图1) 创建的表的sql语句如下,具体字段的说