오라클 쿼리 ... 복수의 테이블 컬럼정보를 모두 출력해야합니다 .. 0 3 1,630

by 날아라갑을 [SQL Query] [2015.07.22 00:07:03]


정부관련된곳 일을 하는데요..

이곳 제가 맡게된 일에서 테이블이 50개입니다 ..

한곳에서 SELECT 할때 전부 JOIN걸어서 보여지게 만들라고하는데요 ..

SELECT * FROM 테이블1 X, 테이블2 Y

WHERE 1=1

AND X."키" = Y."키"

이렇게 두개가져오는건 자주사용하는데 .. 50개를 어떻게 다불러올수있을까요 ...?

UNION이라는것은 테이블안에 컬럼이 많을수록 속도가 엄청 안나온다고 들었습니다 ..

by 마농 [2015.07.22 08:48:46]

조인 2개 하는거 아시면 3개 하는거 시도해 보시구요.
3개 하는거 성공하셨으면 50개도 할 수 있습니다.
그러나...
50개를 조인걸어 한번에 볼 일은 거의 없다고 봐야 합니다.
거의라는 표현을 한것은 약간의 여지를 조금 남긴 것이지만...
아예 없다라고 단정지어도 될 것입니다.


by 창조의날개 [2015.07.22 09:07:20]

만약 50개의 테이블 모두 조인해야만 데이터를 뽑아 올 수 있다면...

설계에 문제가 있지 않나 싶네요...

미리 모든것을 조인해서 데이터를 만들어 두려고 하시는건 아닌지?

해당 업무에 따라 필요한 데이터만 필요한 테이블들에서 가져 와야 할텐데요...


by 거제도원주민 [2015.07.22 17:40:48]
원하시는 결과인지는 모르지만
아래쿼리를 한번 수행해 보시기 바랍니다.
만약 해당 owner에 50개 테이블만 있으면 owner명을 변경하시면 될것이고
다른 용도의 테이블이 있다면 해당 50개테이블을 in 으로 묶어서 조회 하시면 될거같습니다.

SELECT A.TABLE_NAME, A.COLUMN_NAME, DECODE(A.DATA_TYPE,'NUMBER',A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')',A.DATA_TYPE||'('|| A.DATA_LENGTH|| ')' ) DATA_TYPE, DECODE(A.NULLABLE,'Y',',','NOT NULL,') NULLABLE, A.COLUMN_ID ,B.COMMENTS  
  FROM ALL_TAB_COLUMNS A , ALL_COL_COMMENTS B     
 WHERE A.OWNER       = B.OWNER     
   AND A.TABLE_NAME  = B.TABLE_NAME     
   AND A.COLUMN_NAME = B.COLUMN_NAME 
 and A.OWNER = 'CNSONE'    <----------------사용자명을 변경하세요
 ORDER BY TABLE_NAME,COLUMN_ID

수고하세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입