问题:Oracle 树形遍历;结果:使用oracle进行遍历树操作
Oracle数据库遍历树形结构表
1、从根结点开始找子节点
/*
create table test (id int ,pid int ,name varchar(10));
insert into test values ( 1, 0 ,'n1' );
insert into test values( 2, 1 ,'n12');
insert into test values( 3, 1 ,'n13');
insert into test values( 4, 2 ,'n21');
insert into test values( 5, 2 ,'n22');
insert into test values( 6, 3 ,'n31');
insert into test values( 7, 3 ,'n32');
insert into test values( 8, 4 ,'n211');
insert into test values( 9, 4 ,'n212');
*/
/*
从根结点开始找子节点(可以指定节点层级)
*/
select id,pid,name ,level from test
--where level =3
start with id =2
connect by prior id = pid;
2、从叶结点开始找根节点
/*
create table test (id int ,pid int ,name varchar(10));
insert into test values ( 1, 0 ,'n1' );
insert into test values( 2, 1 ,'n12');
insert into test values( 3, 1 ,'n13');
insert into test values( 4, 2 ,'n21');
insert into test values( 5, 2 ,'n22');
insert into test values( 6, 3 ,'n31');
insert into test values( 7, 3 ,'n32');
insert into test values( 8, 4 ,'n211');
insert into test values( 9, 4 ,'n212');
*/
/*
从叶结点开始找根节点
prior 关键字 与谁放在一起,就是找谁
根节点的父节点不能是他本身,那会造成死循环
*/
select * from test /*where conditions*/
start with id=7
connect by id = prior pid;
今天在群里有个朋友问了
起始地 目的地 距离(公里)
A B 1000
A C 1100
A D 900
A E 400
B D 300
D F 600
E A 400
F G 1000
C B 600
请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)。
这样的问题
create table dest(
sid char(1),
eid char(1),
distance int);
insert into dest values('A','B',1000);
insert into dest values('A','C',1100);
insert into dest values('A','D',900);
insert into dest values('A','E',400);
insert into dest values('B','D',300);
insert into dest values('D','F',600);
insert into dest values('E','A',400);
insert into dest values('F','G',1000);
insert into dest values('C','B',600);
很自然的就会想到
select sid from dest connect by prior eid=sid start with sid='A';
但是在运行时提示:ORA-01436: 用户数据中的 CONNECT BY 循环
这是a到e,又从e到a,有死循环......
解决方法:
SELECT distinct eid
FROM dest
START WITH SID='A'
connect by nocycle prior eid=sid
原来connect by里还有nocycle
问题:Oracle 树形遍历;结果:使用oracle进行遍历树操作的更多相关文章
- MySql/Oracle树形结构查询
Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...
- oracle 树形表结构查询 排序
oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...
- Oracle树形结构数据-相关知识总结
Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT * FROM QIANCODE.TREE_TABLE_BASI ...
- ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法
ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块 --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...
- oracle 树形SQL
oracle树形sql查询实例分析 通过此SQL语句 [sql] select * from tree 查看原始数据如下: 我们要想得到如下的一个树形查询结果如下图所示(包含 R ...
- 整理oracle 树形查询
注:本文参考了<整理oracle 树形查询> sql树形递归查询是数据库查询的一种特殊情形,也是组织结构.行政区划查询的一种最常用的的情形之一.下面对该种查询进行一些总结: create ...
- oracle树形语句
oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的 ...
- Oracle树形结构数据---常见处理情景
Oracle树形结构数据---常见处理情景 1.查看表数据结构 SELECT * FROM QIANCODE.TREE_HIS_TABLE T ORDER BY T.NODE_LEVEL; ...
- oracle树操作(select start with connect by prior)
oracle中的递归查询可以使用:select .. start with .. connect by .. prior 下面将会讲述oracle中树形查询的常用方式,只涉及到一张表. 一. 建表语句 ...
随机推荐
- JavaWeb -- Servlet Filter 过滤器
1. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter技术,开发人员可以实现用户在 ...
- linux下 stat statfs 获取 文件 磁盘 信息
stat函数讲解 表头文件: #include <sys/stat.h> #include <unistd.h> 定义函数: int st ...
- CLR事件与路由事件在XAML代码中应用时的区别
<Window x:Class="Demo_window.Window2"xmlns="http://schemas.microsoft.com/winfx/200 ...
- python切片、迭代、生成器、列表生成式等高级特性学习
python高级特性 1行代码能实现的功能,决不写5行代码.请始终牢记,代码越少,开发效率越高. 切片 当我们要取一个list中的前n各元素时,如果前n个少的话,我们还可以一个一个的取,但是若前n个元 ...
- android问题 This version of android studio is incompatible with the gradle version used.
http://blog.csdn.net/sinat_15417921/article/details/51907728 问题背景 因为项目app分包需要,将工程的graddle版本升至了2.2.0 ...
- Eclipse集成c与c++
1.eclipse 开普勒版本 2.安装mingw 3.配置环境变量mingw的 path 加入;C:\MinGW\bin 4.eclipse 中的市场搜索 CDT
- lr中检查点的使用web_find()和web_reg_find()的区别
web_find()和web_reg_find()的区别:1. 这两个函数函数类型不同,web_find()是普通函数,web_reg_find()是注册函数;2. VU run time设置中的 “ ...
- 【Prism】MEF版Commanding
引言 接下来的是Commanding Demo的改造. DelegateCommand WPF本身提供了一个RoutedCommand,然而没什么卵用.在Prism框架中提供了个更人性化的ICo ...
- nyoj-155-求高精度幂(java大数)
题目链接 import java.util.*; import java.math.*; public class Main{ public static void main(String[] arg ...
- 【phpcms-v9】前台content模块中pc标签的调用说明
内容模块PC标签调用说明 模块名:content 模块提供的可用操作 操作名 说明 lists 内容数据列表 relation 内容相关文章 hits 内容数据点击排行榜 category 内容栏目列 ...