어떤 형식으로 작성해야 올바른 쿼리일까요...? 0 2 164

by 탬탬 [SQL Query] [2019.05.15 11:07:58]


안녕하세요 선배님들 ! 공부가 미흡하여 어떻게 작성해야 옳은건지 판단이 안됩니다 ㅠㅠ..

 

테이블이 A1, B1, C1, D1 , A2, B2, C2, D2 가 있습니다.  

ORACLE 사용자만 다르게 들어간 테이블은 2로 네이밍 했습니다.

 

 

SELECT
    *
FROM(
    SELECT
        *
    FROM
        A1 INNER JOIN B1 ON (A1.CD = B1.CD)
    WHERE
        ~~ 공통조건
) AB1 LEFT OUTER JOIN (
    SELECT
        *
    FROM
        C1 INNER JOIN D1 ON (C1.CD = D1.CD)
    WHERE
        ~~ 공통조건
) CD1 ON (AB1.CD = CD1.CD)

UNION ALL 

SELECT
    *
FROM(
    SELECT
        *
    FROM
        A2 INNER JOIN B2 ON (A2.CD = B2.CD)
    WHERE
        ~~ 공통조건
) AB2 LEFT OUTER JOIN (
    SELECT
        *
    FROM
        C2 INNER JOIN D2 ON (C2.CD = D2.CD)
    WHERE
        ~~ 공통조건
) CD2 ON (AB2.CD = CD2.CD)

 

전 FULL SCAN을 최대한 방지해보려 공통조건을 각각 다 주었는데 다 짜고보니 너무 쿼리가 더러운것같아서요... 이런방식으로 짜는게 맞는건가요 ?ㅠㅠ..

by 르매 [2019.05.15 11:34:41]

서브 쿼리가 필요 없을 것 같은데요.

SELECT *
FROM A1
    INNER JOIN B1 ON (A1.CD = B1.CD)
    LEFT OUTER JOIN C1 ON (A1.CD = C1.CD) AND C1에 대한 조건
    LEFT OUTER JOIN D1 ON (A1.CD = D1.CD) AND D1에 대한 조건
WHERE A1, B1에 대한 조건

UNION ALL

SELECT *
FROM A2
    INNER JOIN B2 ON (A2.CD = B2.CD)
    LEFT OUTER JOIN C2 ON (A2.CD = C2.CD) AND C2에 대한 조건
    LEFT OUTER JOIN D2 ON (A2.CD = D2.CD) AND D2에 대한 조건
WHERE A2, B2에 대한 조건;

 


by 탬탬 [2019.05.15 12:36:52]

@르매

감사합니다! 바로 수정해볼게요 ㅎㅎ

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