`
protti
  • 浏览: 55034 次
  • 性别: Icon_minigender_2
  • 来自: 卡利姆多
最近访客 更多访客>>
社区版块
存档分类
最新评论

[转]oracle查询树类型

阅读更多
以下内容来自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放前面作主表
分享到:
评论

相关推荐

    ORACLE9i_优化设计与系统调整

    §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 ...

    oracle10g课堂练习I(1)

    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 数据字典...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    Oracle 10g应用指导

    第4章 Oracle数据字典管理与数据类型。包括数据字典的分类、使用方法以及各种对象的具体查询等做了详细的介绍。第5章 数据库对象的创建与使用。主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、...

    Oracle DBA workshop1 (中文版)

    前言 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

    Oracle自学(学习)材料 (共18章 偏理论一点)

    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完全参考手册.part3/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle_Database_11g完全参考手册.part2/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle Database 11g初学者指南--详细书签版

    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 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...

    Oracle8i_9i数据库基础

    §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

    循序渐进地学习使用Oracle开发所需知识 n 第一部分:关系数据库基础 ...Oracle数据类型 DDL、DML n 第三部分:SQL实战 行列转换、分页、树 n 第四部分:JDBC 使用Java操作数据库 《深入浅出学Oracle》——系列精品教程

    Oracle+10g应用指导与案例精讲

    第4章 Oracle数据字典管理与数据类型。包括数据字典的分类、使用方法以及各种对象的具体查询等做了详细的介绍。第5章 数据库对象的创建与使用。主要包括各种类型的表创建以及适用情形,如外部表、分区表、嵌套表、...

    ORACLE教材

    ORACLE数据类型 SQL基本语法 简单查询 SQL函数 多数据表查询 事务控制 第三章:plsql基础 声明及变量 表达式 PL/SQL数据类型 流程控制 异常处理 过程 函数 游标 包 触发器 第四章:管理表空间 ...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    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/...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    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 ...

    ORACLE重建索引总结

    3 、rebuild online 时系统会产生一个 SYS_JOURNAL_xxx 的 IOT 类型的系统临时日志表 , 所有 rebuild online 时索引的变化都记录在这个表中 , 当新的索引创建完成后 , 把这个表的记录维护到新的索引中去 , 然后 ...

Global site tag (gtag.js) - Google Analytics