【无标题】oralce 递归带路径的问题

SELECT  LEVEL AS le,  SE_BASIC_DATA.COLUMN1, SE_BASIC_DATA.ID,SE_REQ_ITEM_LINK_INFO.* FROM SE_REQ_ITEM_LINK_INFO SE_REQ_ITEM_LINK_INFO LEFT JOIN SE_BASIC_DATA on LINK_TYPE = SE_BASIC_DATA.ID
START WITH  DOCUMENT_FROM = 120800 or DOCUMENT_TO=654386
CONNECT BY nocycle PRIOR (DOCUMENT_FROM ||'_'||ITEM_FROM) =(DOCUMENT_TO ||'_'||ITEM_TO)

WITH t1(id,DOCUMENT_FROM, DOCUMENT_TO,ITEM_FROM,ITEM_TO, lvl, root_id, path) AS (
  -- Anchor member.
  SELECT DOCUMENT_FROM, 
  		DOCUMENT_TO,
  		ITEM_FROM,
  		ITEM_TO,
  		ID,
         1 AS lvl,
         id AS root_id,
         TO_CHAR(id) AS path
  FROM   SE_REQ_ITEM_LINK_INFO
  WHERE  DOCUMENT_FROM = 120800 or DOCUMENT_TO=654386
  UNION ALL
  -- Recursive member.
  SELECT t2.DOCUMENT_FROM, 
 		 t2.DOCUMENT_TO, 
  		t2.ITEM_FROM,
  		t2.ITEM_TO,
  		t2.ID,
         lvl+1,
         t1.root_id,
         t1.path || '-' || t2.id AS path
  FROM   SE_REQ_ITEM_LINK_INFO t2, t1
  WHERE  (t1.DOCUMENT_FROM ||'_'||t1.ITEM_FROM) =(t2.DOCUMENT_TO ||'_'||t2.ITEM_TO)
)
SEARCH DEPTH FIRST BY id SET order1
CYCLE id SET cycle TO 1 DEFAULT 0
SELECT DOCUMENT_FROM, 
  		DOCUMENT_TO,
  		ITEM_FROM,
  		ITEM_TO,
       RPAD('.', (lvl-1)*2, '.') || id AS tree,
       lvl,
       root_id,
       path,
       cycle
FROM t1
ORDER BY order1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值