关于start with ... connect by 求教

[复制链接]
查看11 | 回复9 | 2013-6-9 10:15:34 | 显示全部楼层 |阅读模式
SELECT EMPNO,ENAME,MGR
FROM EMP
CONNECT BY PRIOR EMPNO=MGR
START WITH ENAME=’KING’;

EMPNO ENAME MGR
-------------------------------------------------------------------------------------
7839 KING
7566 JONES 7839
7788 SCOTT 7566
7876 ADAMS 7788
7902 FORD 7566
7369 SMITH 7902
7698 BLAKE 7839
7499 ALLEN 7698
7521 WARD 7698
7654 MARTIN 7698
7844 TURNER 7698
7900 JAMES 7698
7782 CLARK 7839
7934 MILLER 7782
14 rows selected.

但我想要这种效果,可以达到吗?
比如 7934 miller这个人 我要知道他的上级 一直到根节点 每个节点为一列
------------------------------------------------------------------------------------------
7934 miller 7782 clark7839 king
7900 james7698 blake7839 king
7876 adams 7788 scott 7566 jones 7839 king
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
你测试过没有?本来就是这样啊
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
没有明白我意思吗 ? 原来的是行我需要的是列
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
EMPNO
ENAME
MGR
SYS_CONNECT_BY_PATH(EMPNO||ENA
7934
MILLER
7782
->7934MILLER
7782
CLARK
7839
->7934MILLER->7782CLARK
7839
KING
->7934MILLER->7782CLARK->7839KING
这样不行吗
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
EMPNO
ENAME
MGR
SYS_CONNECT_BY_PATH(EMPNO||ENA
7369
SMITH
7902
->7369SMITH
7902
FORD
7566
->7369SMITH->7902FORD
7566
JONES
7839
->7369SMITH->7902FORD->7566JONES
7839
KING
->7369SMITH->7902FORD->7566JONES->7839KING
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
SELECTPATH
FROM (SELECT EMPNO,

ENAME,

MGR,

sys_connect_by_path(empno || ENAME, '->') PATH,

LEVEL

FROM EMP
CONNECT BY EMPNO = PRIOR MGR
START WITH ENAME like 'MILLER'
ORDER BY LEVEL DESC)
WHERE ROWNUM = 1
PATH
->7934MILLER->7782CLARK->7839KING
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
SELECT PATH
FROM (SELECT EMPNO,

ENAME,

MGR,

sys_connect_by_path(empno || ENAME, '->') PATH,

LEVEL RN

FROM EMP
CONNECT BY EMPNO = PRIOR MGR
START WITH ENAME NOT LIKE'KING'
ORDER BY LEVEL DESC)
WHERE ENAME LIKE 'KING'
PATH
->7369SMITH->7902FORD->7566JONES->7839KING
->300smith->7902FORD->7566JONES->7839KING
->7521WARD->7698BLAKE->7839KING
->7499ALLEN->7698BLAKE->7839KING
->7654MARTIN->7698BLAKE->7839KING
->7902FORD->7566JONES->7839KING
->7900JAMES->7698BLAKE->7839KING
->7934MILLER->7782CLARK->7839KING
->7844TURNER->7698BLAKE->7839KING
->7698BLAKE->7839KING
->7782CLARK->7839KING
->7566JONES->7839KING
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层

回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
sys_connect_by_path这一类的函数有没有什么参考手册可供查看。
回复

使用道具 举报

千问 | 2013-6-9 10:15:34 | 显示全部楼层
各位楼上的高人,用sys_connect_by_path 函数只是把字段拼接成一个字段 ,难道不能是多列 不用这个函数.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行