Oracle에서의 재귀
오라클에 다음 표가 있습니다.
Parent(arg1, arg2)
부모의 과도적 폐쇄를 원합니다즉, 아래 표를 원합니다.
Ancestor(arg1, arg2)
Oracle에서는 어떻게 이것이 가능합니까?
저는 다음과 같은 일을 하고 있습니다.
WITH Ancestor(arg1, arg2) AS (
SELECT p.arg1, p.arg2 from parent p
UNION
SELECT p.arg1 , a.arg2 from parent p, Ancestor a
WHERE p.arg2 = a.arg1
)
SELECT DISTINCT * FROM Ancestor;
오류가 납니다.
*Cause: column aliasing in WITH clause is not supported yet
*Action: specify aliasing in defintion subquery and retry
Error at Line: 1 Column: 20
칼럼 앨리어싱 없이 어떻게 해결할 수 있을까요?
WITH Ancestor(arg1, arg2) AS
(
SELECT p.arg1, p.arg2
FROM parent p
WHERE arg2 NOT IN
(
SELECT arg1
FROM parent
)
UNION ALL
SELECT p.arg1, a.arg2
FROM Ancestor a
JOIN parent p
ON p.arg2 = a.arg1
)
SELECT *
FROM Ancestor
Oracle
재귀적만 지원합니다.CTE
부터11g
릴리스 2.
이전 버전에서는 다음을 사용합니다.CONNECT BY
조항:
SELECT arg1, CONNECT_BY_ROOT arg2
FROM parent
START WITH
arg2 NOT IN
(
SELECT arg1
FROM parent
)
CONNECT BY
arg2 = PRIOR arg1
Oracle은 재귀적 쿼리를 허용합니다.참조: http://www.adp-gmbh.ch/ora/sql/connect_by.html
물론 계층 데이터가 모두 한 테이블에 있다고 가정합니다.그것을 각각의 테이블로 나누는 것은 일을 복잡하게 만듭니다.
언급URL : https://stackoverflow.com/questions/4659803/recursion-in-oracle
'programing' 카테고리의 다른 글
JSON_OBJECT 값으로 mysql 결과 주문 (0) | 2023.09.21 |
---|---|
CSS selector - 주어진 자식이 있는 요소 (0) | 2023.09.21 |
WP REST API를 사용하여 사용자 지정 게시 유형에서 데이터를 가져오려면 어떻게 해야 합니까? (0) | 2023.09.21 |
일순간에일순간에일순간에 (0) | 2023.09.21 |
최신 C 컴파일러를 사용한 __STDC_IEC_559__의 상태 (0) | 2023.09.21 |