以下内容来自http://hi.baidu.com/suofang/blog/item/a58bdd5829d5e583800a1812.html(其中的图片可到这个地址查看)
connect by prior start with 经常会被用到一个表中存在递归关系的时候。比如我们经常会将一个比较复杂的目录树存储到一个表中。或者将一些部门存储到一个表中,而这些部门互相有隶属关系。这个时候你就会用到connect by prior start with。
典型的使用方法就是:
select * from table connect by prior cur_id=parent_id start with cur_id=???
例如:
a b
1 0
2 1
3 1
4 2
5 3
如果想查找a=2及其下面的所有数据,则:
select * from table connect by prior a=b start with a=2
a b
2 1
4 2
这些只是基础,皮毛。其实只要你灵活的构造查询语句。可以得出意想不到的结果。比如生成树每一个路径。
但是这些记录组成的树必须正常才可以。如果有互为父子的情况,就会出现循环错误!
示例:
表结构图
表数据
select * from tb_cus_area_cde
--子取父
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'
--父取子
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null
*************************自己总结 还是看CSDN吧,赛迪总是不好用http://writeblog.csdn.net/PostList.aspx*********************************
ORACLE查询树型关系(connect by prior start with)
有如下表结构:
create table TVideoSort
(
FsysId NVARCHAR2(32 char) not null,
FSortName NVARCHAR2(32 char),
FSortTopId NVARCHAR2(32 char),
FSortAddress number,
FSortIsList char(1),
constraint PK_TVIDEOSORT primary key (FsysId)
);
数据如下:
--子查父(通过子节点向根节点追朔.)
查询〔特下边〕的父节点
select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList from TVideoSort
start with FsysId='3703E5CD81E48D6BE040007F01001254'--这个是特下边的fsysid
connect by prior FSortTopId=FsysId
order by FsortAddress
结果
――父查子(通过根节点遍历子节点.)
查询〔特下边〕的子节点:结果
select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList
from TVideoSort start with FsysId='3703E5CD81E48D6BE040007F01001254' --这个是特下边的fsysid
connect by prior FsysId=FSortTopId order by FsortAddress
查询〔特长练习〕的子节点:结果
select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList
from TVideoSort start with FsysId='36AE4D68EC7D364CE040007F01000CA5'
connect by prior FsysId=FSortTopId order by FsortAddress
特别注意,两个查询只是FsysId=FSortTopId不同而已,即子查父则把FSortTopId做为主表放前面,父查子则把FsysId放前面作主表
分享到:
相关推荐
§13.2.3 使用B树索引- 166 §13.2.4 使用反向键索引- 166 §13.2.5 使用索引组织表 166 §13.3 使用范围索引 166 §13.4 使用簇 - 167 §13.5 使用Hash 簇 - 168 §13.5.1 何时创建Hash 簇 168 §13.5.2 创建Hash ...
B 树索引 7-28 位图索引 7-30 索引选项 7-32 创建索引 7-34 什么是视图 7-35 创建视图 7-36 序列 7-37 创建序列 7-38 使用序列 7-40 临时表 7-41 临时表:注意事项 7-43 数据字典:概览 7-44 数据字典...
varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...
第4章 Oracle数据字典管理与数据类型。包括数据字典的分类、使用方法以及各种对象的具体查询等做了详细的介绍。第5章 数据库对象的创建与使用。主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、...
前言 1 简介 课程目标1-2 建议日程表1-3 课程目标1-4 Oracle 产品和服务1-5 Oracle Database 10g:“g...B 树索引7-28 位图索引7-30 索引选项7-32 创建索引7-34 vi 什么是视图7-35 创建视图7-36 序列7-37 创建序列7-38
11 管理表 目标 11-2 储存用户数据 11-3 Oracle 数据类型 11-5 ROWID 格式 11-8 行的结构 11-10 创建一张表 11-11 创建临时表 11-13 创建表:指南 11-14 修改储存参数 11-15 手工分配片 11-16 重构非分区表 11-17 ...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 ...
他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
§1.7 ORACLE数据类型 38 §1.8 SQL 语句基础 44 §1.8.1 SQL语句所用符号 44 §1.8.2 简单select 查询 45 §1.9 伪列及伪表 46 §1.10 使用SQL Worksheet工作 46 第二章 查询基础 50 §2.1 SELECT语句 50 §2.2 SQL...
循序渐进地学习使用Oracle开发所需知识 n 第一部分:关系数据库基础 ...Oracle数据类型 DDL、DML n 第三部分:SQL实战 行列转换、分页、树 n 第四部分:JDBC 使用Java操作数据库 《深入浅出学Oracle》——系列精品教程
第4章 Oracle数据字典管理与数据类型。包括数据字典的分类、使用方法以及各种对象的具体查询等做了详细的介绍。第5章 数据库对象的创建与使用。主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、...
ORACLE数据类型 SQL基本语法 简单查询 SQL函数 多数据表查询 事务控制 第三章:plsql基础 声明及变量 表达式 PL/SQL数据类型 流程控制 异常处理 过程 函数 游标 包 触发器 第四章:管理表空间 ...
12.1 Oracle数据类型概述 491 12.2 字符和二进制串类型 494 12.2.1 NLS概述 494 12.2.2 字符串 497 12.3 二进制串:RAW类型 504 12.4 数值类型 506 12.4.1 NUMBER类型的语法和用法 509 12.4.2 BINARY_FLOAT/...
1.3 Oracle Database 11g的基本数据类型 1.3.1 varchar2 1.3.2 数字 1.3.3 日期 1.3.4 时间戳 1.3.5 clob 1.3.6 blob 1.4 表 1.5 存储对象 1.5.1 视图 1.5.2 触发器 1.5.3 过程 1.5.4 函数 1.5.5 包 1.6 Oracle ...
3 、rebuild online 时系统会产生一个 SYS_JOURNAL_xxx 的 IOT 类型的系统临时日志表 , 所有 rebuild online 时索引的变化都记录在这个表中 , 当新的索引创建完成后 , 把这个表的记录维护到新的索引中去 , 然后 ...