3개의 테이블을 합쳐서 데이터를 가져오는 방법이 궁금합니다. 0 1 265

by 딩구 [2022.01.25 22:07:27]


안녕하세요. 

(ORACLE) 테이블 3개를 합쳐서 원하는 조건일 때 우선순위를 정하여 해당 테이블의 데이터를 가져오려고 하고 있습니다.

예를 들어 이벤트당첨 테이블 A, B, C (컬럼 : 당첨자, 당첨시간, 당첨금액)가 있을 때 특정기간(22년 1월 25일 12시)에 해당하는 데이터가 3군데에 다 있더라도 특정 테이블을 우선순위로 정해서(우선순위 A>B>C) A 테이블의 데이터를 가지고 오는 방법이 있을까요? (테이블에 데이터가 B 테이블에만 존재할 경우 B 데이터만 가져오려고 하고 있습니다.)

 

3개의 테이블을 조인해서는 데이터를 가져오기 힘들어 계층구조도 알아보고 VIEW 를 만들어보려고도 하였으나 잘 진행이 되지 않아

조언을 얻고자 질문드립니다.

by 마농 [2022.01.26 08:13:43]
SELECT *
  FROM (SELECT gb, 당첨자, 당첨시간, 당첨금액
             , RANK() OVER(ORDER BY gb) rk
          FROM (SELECT 1 gb, 당첨자, 당첨시간, 당첨금액 FROM a WHERE 특정기간
                 UNION ALL
                SELECT 2 gb, 당첨자, 당첨시간, 당첨금액 FROM b WHERE 특정기간
                 UNION ALL
                SELECT 3 gb, 당첨자, 당첨시간, 당첨금액 FROM c WHERE 특정기간
                )
        )
 WHERE rk = 1
;

SELECT 당첨자, 당첨시간, 당첨금액
  FROM a
 WHERE 특정기간
 UNION ALL
SELECT 당첨자, 당첨시간, 당첨금액
  FROM b
 WHERE 특정기간
   AND NOT EXISTS (SELECT 1 FROM a WHERE 특정기간)
 UNION ALL
SELECT 당첨자, 당첨시간, 당첨금액
  FROM c
 WHERE 특정기간
   AND NOT EXISTS (SELECT 1 FROM a WHERE 특정기간)
   AND NOT EXISTS (SELECT 1 FROM b WHERE 특정기간)
;

 

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