--创建测试数据表tb

create table tb(id varchar(3) , pid varchar(3) , name varchar(10))

insert into tb values('' , null , '广东省')

insert into tb values('' , '' , '广州市')

insert into tb values('' , '' , '深圳市')

insert into tb values('' , '' , '天河区')

insert into tb values('' , '' , '罗湖区')

insert into tb values('' , '' , '福田区')

insert into tb values('' , '' , '宝安区')

insert into tb values('' , '' , '西乡镇')

insert into tb values('' , '' , '龙华镇')

insert into tb values('' , '' , '松岗镇')

go

--创建查询指定节点及其所有子节点的函数f_cid

create function f_cid(@ID varchar(3)) returns @t_level table(id varchar(3) , level int)

as

begin

declare @level int

set @level = 1

insert into @t_level select @id , @level

while @@ROWCOUNT > 0

begin

set @level = @level + 1

insert into @t_level select a.id , @level

from tb a , @t_Level b

where a.pid = b.id and b.level = @level - 1

end

return

end

go

--调用函数查询001(广东省)及其所有子节点

select a.* from tb a , f_cid('') b where a.id = b.id order by a.id

/*

id pid name

---- ---- ----------

001 NULL 广东省

002 001 广州市

003 001 深圳市

004 002 天河区

005 003 罗湖区

006 003 福田区

007 003 宝安区

008 007 西乡镇

009 007 龙华镇

010 007 松岗镇

(所影响的行数为 10 行)

*/

--调用函数查询002(广州市)及其所有子节点

select a.* from tb a , f_cid('') b where a.id = b.id order by a.id

/*

id pid name

---- ---- ----------

002 001 广州市

004 002 天河区

(所影响的行数为 2 行)

*/

--调用函数查询003(深圳市)及其所有子节点

select a.* from tb a , f_cid('') b where a.id = b.id order by a.id

/*

id pid name

---- ---- ----------

003 001 深圳市

005 003 罗湖区

006 003 福田区

007 003 宝安区

008 007 西乡镇

009 007 龙华镇

010 007 松岗镇

(所影响的行数为 7 行)

*/

drop table tb

drop function f_cid

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

写这个教程的原因,是因为,无限极分类,在许多项目中,都用得到.而对于新手来说,不是很好理解,同时,操作上也有一些误区或者不当之处.所以我就斗胆,抛砖引玉一下,已一个常见的后台左侧频道树为例子,讲解一下 ...

thinkphp 无限极分类的数据库设计及效果测试

控制器继承IndexAction.class.php <?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends CateAction { } ?&g ...

asp&period;net sql无限极分类实例程序

数据库结构  代码如下 复制代码 create table category(    id                  int,                    clsno         ...

PHP无限极分类实现

简单版的PHP生成无限极分类代码.其中包括了数据库设计.以及输出分类HTML代码. SQL代码 CREATE TABLE `district` ( `id` int(10) unsigned NOT ...

php不使用递归实现无限极分类

无限极分类常用的是递归,但是比较不好理解,其实可以用数据库path,pid两个字段的设计来实现无限分类的功能 1.数据库设计 通过上图可以看出pid就是该栏目的父id,而path = 父path+pi ...

PHP实现无限极分类的两种方式,递归和引用

面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' =& ...

php无限极分类以及递归&lpar;thinkphp&rpar;

php无限极分类: 无限极分类重点在于表的设计: 1在model中: class CatModel extends Model{ protected $cat = array(); public fu ...

js实现无限极分类

转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...

C&num;无限极分类树-创建-排序-读取 用Asp&period;Net Core&plus;EF实现之方法二:加入缓存机制

在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

随机推荐

【Android】一道Android OpenGL笔试题

一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163 更多精彩请直接访问SkySeraph个人站点:www.sky ...

【Jersey】基于Jersey构建Restful Web应用

环境说明 java: 1.6: tomcat: 6.0.48: Jersey:1.18: Jersey介绍 主要用于构建基于Restful的Web程序: 构建基于Maven的Javaweb程序 说明: ...

mysqli 操作数据库(转)

从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...

MATLAB 通过二进制读写文件

这几天在做信息隐藏方面的应用,在读写文本文件时耗费许久,故特别的上网学习一二,这里给出一常用读写,其他的都类似. 很多时候,我们都要将一个.txt以二进制方式读出来,操作后在恢复成.txt文本. ma ...

vim之pydiction插件

[vim之pydiction插件] It consists of three main files: python_pydiction.vim -- Vim plugin. complete-dict ...

Oracle EBS-SQL &lpar;INV-1&rpar;&colon;库存货位列表&period;sql

select inventory_location_id, organization_id, description, subinventory_code, segment1 inventory_lo ...

Distinguishing Between Embedded and General-Purpose Computing

标题:嵌入式系统与通用计算机系统的区别 To understand what falls into the category of embedded computing ,it is instruct ...

Red Hat Enterprise Linux7 配置Tomcat

笔者是Java前端的一个萌新,电脑刚刚经历了一番脱胎换骨,然后重新装了Win10Pro,所有的开发工具都要重新安装,纠结了一番以后决定还是把一些开发工具从Windows上转移到Linux上,首先考虑了 ...

Java内存泄漏分析系列之七:使用MAT的Histogram和Dominator Tree定位溢出源

更多推荐

php无限极分类数据库设计,无限极分类sql数据库的设计