SQL 无限级分类语句

原文:SQL 无限级分类语句

原表数据为:

 

此处用到了with关键字,在程序中也可以用递归实现,但觉得还是没有一条sql方便

with tb (ID,Name,ParentID,Sort)
as(
 select a.*,convert(varchar,convert(varchar,partid)+'->'+convert(varchar,ID))
 from test a where partid=0  --查询所有父节点
 UNION ALL
 select a.*,convert(varchar,sort+'->'+convert(varchar,a.ID))
 from test a inner join tb b on a.partid=b.ID
)
select * from tb order by sort

View Code

这是查询所有父节点的数据,如要查询某个子节点把where条件改为id=子节点ID 即可

时间: 2024-08-01 22:02:33

SQL 无限级分类语句的相关文章

ASP.NET无限级分类之美好字段(深度字段)

下图中红色箭头是父类 而且属于根目录级别. 下面个字段为:ID 父ID 类型名称 深度 排序 前面3个字段没有什么可解释的,做过无限级分类设计的人都应该清楚 而第5个字段排序字段ID:43的23排序代表他在这张表排在23的根目录 而23下面的23,01 说明他是2级分类,排在23下面的第01个,也是支持99级分类. 而我比较特殊的是多了个深度字段,大家可以看上图数据, ID:40的 深度字段也是40,ID:43的 深度字段也是43. 而他们的下级子类,后面都跟了个 "," 加自己的ID

PHP无限级分类菜单实例程序

最近在做一个内容管理的项目,客户硬要来一个多级分类,其实在许多的开源后台都是无限级的分类,比如111cn.net的后台,而这些分类的数据仅仅只保存到了一个数据表里,只是用源代码进行了关联而已. 而这些关联的数据并不复杂,其实一个优秀的后台设计,应该是无限的分类,这样,在进行二次开发时,不用再单独进行编程了,只要是功能一样,后台添加一个分类就可以了,这样就达到了功能共享了. 一个更简单的无限级分类菜单代码,我就把上面的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单

mysql 无限级分类实现思路_Mysql

第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类.这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这样可以根据WHERE id = fid来判断上一级内容,运用递归至最顶层. 分析:通过这种数据库设计出的无限级,可以说读取的时候相当费劲,所以大部分的程序最多3-4级分类,这就足以满足需求,从而一次性读出所有的数据,再对得到数组或者对象进行递归.本身负荷还是没太大问题.但是如果分类到更多级,那是不可取

php+mysql不用递归实现的无限级分类实例(非递归)_php实例

要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的 本文还是通过数据库的设计,用一句sql语句实现 数据库字段大概如下: 复制代码 代码如下: id 编号 fid 父分类编号 class_name 分类名 path 分类路径,以 id 为节点,组成类似 ,1,2,3,4, 这样的字符串 可以假设有如下的数据: 复制代码 代码如下: id fid class_name path 1  0       分类1 ,       1, 2

琥珀无限级分类联动菜单AJAX版

ajax|菜单|联动菜单 我做好琥珀无限级分类联动菜单Javascript版后,在蓝色理想和CSDN上发表了一下,梅花雪兄在CSDN上提出了效率不足的问题,我也认识到了这一点,本打算项目完工后再进行完善,但一时技痒,便在网上寻找了一下资料,最后做出了此AJAX版无限级分类联动菜单.因时间匆忙,做得比较粗糙,但已利用AJAX技术,实现无限级联动,待过一段时间再完善此版本.希望能给大家提供一些帮助,有好的建议或bug可在此帖后回复或浏览http://www.51ajax.com/bbs/发帖.运行环

ASP把无限级分类生成数组

数组 把无限级分类循环出来确实是一件头疼的事情.比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断.有没好点的办法呢?我的做法是生成数组,可以重复调用,直接循环数组就行了.为了方便,我把它写成了类. class.asp 返回所有分类的数组,并按顺序排列有4个属性:set aa=new classlistaa.id="id"//编号的名称aa.classname="classname"//分类名称aa.pid="pid"//父ID

PHP无限级分类查找父层函数

函数 如: classID          classFID          className          classCount      1                  0                   中国                     0      2                  1                   浙江                     0      3                  1                

php+mysql实现无限级分类 | 树型显示分类关系

    无限级分类,主要是通过储存上级分类的id以及分类路径来实现.由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现,下面是分类数据表结构和自己写的一个树状显示函数,有什么不妥的地方希望大家能指出.     表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径(储存该分类祖先的集合),isdir判断是否是目录(1为是,0为否).     显示函数: //$count为分类等级 sort_list($st

php+mysql无限级分类

无限级分类...但是效率不是最好的...大家有没有更快更好的效率的代码呢? 用递归等到类别多的时候就会影响效率了! 求分享! class.sql -- -- 表的结构 `class` -- set names utf8; CREATE TABLE `class` ( `id` int(10) NOT NULL auto_increment, `name` varchar(250) character set utf8 default NULL, `classid` int(10) default