With as 递归查询】的更多相关文章

开篇:项目中用到上下级从属关系的太多太多了,如:组织.分类.行政区域,这里不再一一介绍,遇到这种的如何去进行数据库表的设计及其应用的,个人对往期项目中所涉及到的进行了一些总结. 数据库表设计:表字段一般含有:ID,Code,Name,ParentCode,ParentName,CodePath,NamePath,Level,IsNotLast,这里解释一下CodePath,NamePath,主要是为了后续方便查询使用,Level是为了方便层级检索,IsNotLast是是否最后一级,这个作用在行政…
使用CTE进行递归查询,能够实现对层次结构的数据的快速访问,非常有用. TSql CTE 递归原理探究 TSql 分层和递归查询 1,CTE的递归结构 递归查询的结构包括两部分:起始点和迭代公式. 使用CTE递归,其迭代终止条件是达到max_recursive指定的递归次数,或递归公式返回的结果集是empty,(即递归公式没有返回任何结果). 创建测试数据:ManagerID是UserID的父节点,这是一个非常简单的层次结构模型. use tempdb go create table dbo.d…
本文标题:Oracle递归查询:使用prior实现树操作 本文链接:http://yedward.net/?id=41 本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处. Oracle递归查询:使用prior实现树操作 时间:2014年08月03日  浏览:8467次 oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的数据以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方…
直接在oracle 递归查询语句 select * from groups start with id=:DeptId connect by prior superiorid =id 往下找 select * from groups start with id=:DeptId connect by prior id=superiorid…
1.创建表: DROP TABLE IF EXISTS `t_areainfo`; CREATE TABLE `t_areainfo` ( `id` ) ' AUTO_INCREMENT, `) ', `name` ) ', `parentId` ) ', `status` ) ', PRIMARY KEY (`id`) ) ENGINE DEFAULT CHARSET=utf8; 2.初始数据: '); '); '); '); '); '); '); '); '); '); '); '); '…
在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系.其命令格式如下: SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR列名2} [START WITH]: 其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中.PRIORY运算符必须放置在连接关系的两列中某一个的前面.对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树…
感觉这个CTE递归查询蛮好用的,先举个例子: use City; go create table Tree ( ID int identity(1,1) primary key not null, Name varchar(20) not null, Parent varchar(20) null ) go insert Tree values('大学',null) insert Tree values('学院','大学') insert Tree values('计算机学院','学院') in…
注明:该文章为引用别人的文章,链接为:http://blog.csdn.net/apicescn/article/details/1510922 ,本人记录下来只是为了方便查看 原文: connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start by cond1 connect by cond2 where cond3; 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: id,parentid那么通过表示每一条记录…
[z]http://jingyan.baidu.com/article/5d368d1e182bb93f60c05784.html START WITH CONNECT BY PRIOR这个语法主要用于查询数据包中的树型结构关系.先看下原始数据时怎么样的吧! 表中第一行1001是1002的父节点,而第二行1002又是1003的父节点,如此循环.如题:要求给出其中一个数字能找出其最终的根节点!应该要怎么样实现呢?请看如下sql语句,这里我就拿1008为例.图中第一行第一个num1就是根节点了.再来…
1.sqlserver递归查询方式 CTE: if OBJECT_ID('tb','N') is not null   drop table tb;     create table tb(id varchar(3) , pid varchar(3) , name varchar(10));  insert into tb values('001' , null , '广东省');  insert into tb values('002' , '001' , '广州市');   insert i…
比如表结构数据如下: Table:Tree ID Name ParentId 1 一级  0 2  二级 1 3  三级 2 4 四级 3 SQL SERVER 2005查询方法: //上查 with tmpTree as ( select * from Tree where Id=2 union all select p.* from tmpTree inner join Tree p on p.Id=tmpTree.ParentId ) select * from tmpTree //下查…
需求: 一篇文章里有很多评论,每个评论又有很多回复评论,要求: 页面将文章展示出来,且文章的主评论按照评论时间分页展示,回复评论的评论完全展示在每个主评论下面,且按照回复时间排序 最终查询结果SQL查询结果如下: Code: 评论编码,ParentCode:回复评论编码,num:主评论序号,lvl:评论层级,CreateTime:评论创建时间 SQL详细过程如下: 1-先创建我们的数据临时表作为基础数据: a.ContentInfoCode为文章编码 SELECT * INTO #a FROM…
函数:http://my.oschina.net/Kenyon/blog/108303 紧接上述,补充一下: 输入/输出参数的函数demo(输入作为变量影响sql结果,输出作为结果返回) create or replace function f_dept_salary_out2(int, out o_dept text,out o_salary text) returns setof record as $$ declare v_rec record; begin for v_rec in EX…
1.公用表表达式(CTE)的定义 公用表达式的定义包含三部分: 公用表表达式的名字(在WITH之后) 所涉及的列名(可选) 一个SELECT语句(紧跟AS之后), 公用表表达式的好处之一是可以在接下来一条语句中多长引用,记得是接下来一条语句 在MSDN中的原型: WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) 2.非递归公用表表达式(CTE) 非递归的CTE引用与普通Select查询没有太实…
with cte as ( select Id,Pid,DeptName,0 as lvl from Department where Id = 2 union all select d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department d on c.Id = d.Pid ) select * from cte 表结构 Id Pid DeptName ----------- ----------- ---------------…
这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: create table a_test ( parentid ), subid )); ' ); ' ); ' ); ' ); ' ); ' ); ' ); ' ); ' ); ' ); ' ); ' ); commit; select * from a_test; 对应B树结构为: 接下来看一个示例: 要求给出其中一个结点值,求其最终父结点.以7为例,看一下代码 sta…
Oracle中的select语句可以用start with...connect by prior子句实现递归查询,connect by 是结构化查询中用到的, 其基本语法是: select ... from <TableName>where <Conditional-1>start with <Conditional-2>connect by <Conditional-3>; <Conditional-1>:过滤条件,用于对返回的所有记录进行过滤…
Sql语句里的递归查询 SqlServer2005和Oracle 两个版本 以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询举例说明:SqlServer2005版本的Sql如下:比如一个表,有id和pId字段,id是主键,pid表示它的上级节点,表结构和数据:CREATE TABLE [aaa]( [id] [int] NULL, [pid] [int] NULL, [name] [nchar](10))GOINSERT INTO aa…
原文摘自:http://blog.csdn.net/pdn2000/article/details/6674243 Sql语句里的递归查询 SqlServer2005和Oracle 两个版本 以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询举例说明:SqlServer2005版本的Sql如下:比如一个表,有id和pId字段,id是主键,pid表示它的上级节点,表结构和数据:CREATE TABLE [aaa]( [id] [int] N…
SQLserver2008使用表达式递归查询语句 --由父项递归下级 with cte(id,parentid,text) as (--父项 select id,parentid,text from treeview where parentid = 450 union all --递归结果集中的下级 select t.id,t.parentid,t.text from treeview as t inner join cte as c on t.parentid = c.id ) select…
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 上面是对递归有个小小的了解.下面给出一个具体的例子 这个例子的作用是根据ID值找出该ID对应值下的地区有哪些? 源代码: ---db2递归查询 CREATE TABLE AreaInfo ( ID INTEGER NOT NULL PRIMARY KEY, ParentID INT,…
在一次项目中遇到一种需求,需要记录某产品的替换记录. 实际应用举例为:产品101被201替换,之后201又被303替换,303又被109替换:产品102被202替换,之后202又被105替换. 现在我们需要在已知任何产品序列号时,可以检索出该产品的整个被替换过程和最终的替换结果. 设计表格如下: 产品替换记录(原序列号,替换后序列号) 示例数据如下: 原序列号 替换后序列号 101 201 102 202 201 303 303 109 202 105   比如,已经表中存在过201这一产品,那…
百度运维部二面,直接懵逼的节奏 (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求, 必须使用一个准确的查询结果回复客户机. 如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机. 客户机和服务器之间的查询是递归查询 是递归查询告诉客户机IP (2)迭代查询 DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址, 当客户机发送查询请求时,…
一.需求 项目里要让用户能够设置所选择教材的章课节,以针对章课节提供相应的题目供用户做题. 设计:用户设置了教材后,首次登录,进行章节设置时.默认为用户选择第一章.第一课.第一节. 思路:用户访问页面,章一栏显示所有章,课一栏显示第一章下所有课程,节一栏显示第一章.第一课下的所有节.然后获取用户当前选择的章课节信息.如果当前用户没有设置过该教材的章课节,就为其设置默认的第一章.第一课.第一节. 数据库设计:此处将章课节所有信息存放到一张表中,可递归查询.最上一级章的parentid是教材的id.…
上一篇中讲解了ORACLE中的递归查询,下面我们看一下DB2中如何使用递归查询: 同样的我们先新建一个表来存储以上信息,并插入测试数据: --建表 create table FAMILY ( person_id INTEGER, name ), parent_id INTEGER ); --插入测试数据 , ); , ); , ); , ); , ); , ); , 'Mary', null); , ); , ); , 'Li Lei', null); 在DB2中使用with字句实现递归查询:…
现实中我们经常需要用到一些递归查询,下面我们来介绍下ORACLE中递归查询的使用. 首先我们先新建一个表来存储以上信息 create table FAMILY ( person_id INTEGER, name ), parent_id INTEGER ) 插入测试数据 , ); , ); , ); , ); , ); , ); , 'Mary', null); , ); , ); , 'Li Lei', null); 在Oracle中使用start with connect by prior字…
递归查询,临时表的高级应用 WITH temp AS ( --父项 SELECT * FROM Ar_Area WHERE Ar_Parent = UNION ALL --递归结果集中的下级 SELECT m.* FROM Ar_Area AS m INNER JOIN temp AS child ON m.Ar_Parent = child.Ar_Code ) SELECT * FROM temp 实际应用: 只查一个父ID的所有子分类包括自己 WITH temp AS ( --父项 SELE…
Oracle中的select语句可以用start with...connect by prior子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from <TableName> where <Conditional-1> start with <Conditional-2> connect by <Conditional-3>; <Conditional-1>:过滤条件,用于对返回的所有记录进行…
oracle中的层级操作非常方便,在使用之后爱不释手,以前要实现该种数据查询操作,需要非常复杂的实现过程.在oracle中通过connect by可以实现前面的目的,通常情况下层级查询基本都能实现递归查询目的.下面是connect by的使用语法: select [level], column, expr... from table [where condition] start with condition connect by [prior nodeCode1 = nodeCode2 | n…
在做数据库设计这块,很多时候表的数据模型就是典型的二叉树结构. 于是在查询数据的时候,就涉及到了数据的递归查询. 递归查询分为两种:1.从根节点查询自身以及所有的子节点:2.从子节点查询自身以及所有的父节点. 下面分别以Oracle 11g 数据库和MsSql 2008 数据库为例,来实现上述两种类型的递归查询 先建一张表 表名: TAdministrative  字段名称  说明  AdministrativeID  行政编号  AdministrativePID  当前行政级别的上一行政级别…