database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41986 게시물 읽기
No. 41986
테이블간 relational 관계를 SQL로 추출이 가능할까요?
작성자
빵빵이
작성일
2024-03-07 21:09
조회수
229

user_constration, user_cons_columns 테이블을 이용하여 두 테이블간의 relational은 추출이 가능한데


loop 없이 전체 테이블의 처음부터 끝까지 relational을 추출할 수 있을까요?


예를 들어 A -> B -> C -> D 테이블 관계가 있고

             A -> E -> F

             B -> G -> H 이런식으로 ERD가 있다면


결과값은 순서 상관없이


테이블    컬럼    테이블   컬럼   테이블   컬럼   테이블   컬럼

   D        col1       C       col1       B       col1      A       col1

   F        col2        E       col2       A       col2 

   H       col3        G       col3       B       col3


이런식으로 추출이 한번에 가능할까요?


 

이 글에 대한 댓글이 총 2건 있습니다.
WITH t1 AS
(
SELECT owner, constraint_name, table_name
     , LISTAGG(column_name, ',') WITHIN GROUP(ORDER BY position) cols
  FROM user_cons_columns
 GROUP BY owner, constraint_name, table_name
)
, t2 AS
(
SELECT a.owner
     , a.constraint_name
     , a.constraint_type
     , a.table_name
     , b.cols
     , a.r_owner
     , a.r_constraint_name
     , c.table_name r_table_name
     , c.cols r_cols
  FROM user_constraints a
     , t1 b
     , t1 c
 WHERE a.constraint_type   = 'R'
   AND a.owner             = b.owner
   AND a.constraint_name   = b.constraint_name
   AND a.r_owner           = c.owner
   AND a.r_constraint_name = c.constraint_name
)
SELECT REGEXP_SUBSTR(x, '[^-]+', 1, 1) r1
     , REGEXP_SUBSTR(x, '[^-]+', 1, 2) r2
     , REGEXP_SUBSTR(x, '[^-]+', 1, 3) r3
     , REGEXP_SUBSTR(x, '[^-]+', 1, 4) r4
  FROM (SELECT SYS_CONNECT_BY_PATH( table_name||'('||  cols||')'||'>'||
                                  r_table_name||'('||r_cols||')', '-') x
          FROM t2
         CONNECT BY PRIOR r_owner = owner
                AND PRIOR r_table_name = table_name
        )
;

 
마농(manon94)님이 2024-03-20 15:56에 작성한 댓글입니다.

감사합니다.

알려주신대로 잘 해결했습니다. 

빵빵이님이 2024-05-14 20:51에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41989대용량 데이터 group by, order by desc 조언 구합니다.
DB초보
2024-05-14
38
41988ora 1008에러가 나는데 도움좀 부탁드립니다 [1]
2024-04-19
243
41987통계자료 쿼리 작성 가능할까요? [1]
이은정
2024-04-04
184
41986테이블간 relational 관계를 SQL로 추출이 가능할까요? [2]
빵빵이
2024-03-07
229
41985이번에도 쿼리 좀 도와 주세요. [1]
서주희
2024-02-26
225
41983쿼리 좀 도와주셔요.. [2]
서주희
2024-02-07
315
41982행의 값을 순차 차감하고 싶어요~ [1]
쿼리공부
2024-02-05
255
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다