基金亏了还能回本吗:connet by 的用法

来源:百度文库 编辑:高校问答 时间:2024/04/28 15:59:12
有谁知道怎么使用吗?

在你的数据库中执行:
$oracle_home\rdbms\admin\scott.sql
然后用scott/tiger登陆到sqlplus中,分别执行:

SELECT SYS_CONNECT_BY_PATH(ename, '>') "Path"
FROM scott.emp
START WITH ename = 'KING'
CONNECT BY PRIOR empno = mgr;

SELECT ename
FROM scott.emp
START WITH ename = 'KING'
CONNECT BY PRIOR empno = mgr;

以这个为例:
START WITH 代表你要开始遍历的的节点,
CONNECT BY PRIOR 是标示父子关系的对应!

又或是:
connect by子句提供了遍历“树”的手段。
假设有这样一个表:CREATE TABLE ROYAL_TREETABLE (ID INTEGER, PARENT_ID INTEGER, NAME VARCHAR2(32));
表中有如下数据:
ID PARENT_ID NAME
-----------------
2 1 AAA
3 1 BBB
4 2 CCC
5 2 DDD
6 4 EEE
8 7 GGG

假如我们现在需要从NAME = 'EEE'的记录开始,向上查找所有有父子关系的记录,可执行如下SQL语句:

SELECT * FROM ROYAL_TREETABLE START WITH NAME = 'EEE' CONNECT BY ID = PRIOR PARENT_ID;

ID PARENT_ID NAME
-----------------
6 4 EEE
4 2 CCC
2 1 AAA