INNER JOIN 조건식 질문입니다. 0 4 2,215

by 미들타이거 [SQL Query] sql 조건 쿼리 INNER JOIN OUTER JOIN 조건식 [2019.05.20 21:07:27]


안녕하세요 잘못 생각하고 있나해서 질문드립니다.

예제 ) SELECT A.AAAA, A.BBB 

        FROM TABLE A

                 INNER JOIN(

                   SELECT B.AAA

                            , B.BBB

                    FROM TABLE B, TABLE C

                   WHERE B.AAA = C.AAA

                       AND B.AAA = A.AAA

                 )

 

기존 쿼리가 이런식으로 되있습니다 실행시 오류가나고요

안된다 생각이들고 수정하긴했는데   "AND B.AAA = A.AAA" 이 조건은 될수가 없는게 맞죠?

도움 부탁드립니다.

by 마농 [2019.05.21 08:43:11]

네. 안됩니다.
상관관계 서브쿼리는 FROM 절에서는 안됩니다.


by 미들타이거 [2019.05.21 10:07:23]

네~감사합니다.


by 르매 [2019.05.21 09:33:45]

기본적으로 본문의 쿼리는 단순히 3개의 테이블을 조인하고자 하는 듯한데요. 혹시 B와 C를 먼저 조인하고 싶으셔서 서브쿼리를 사용하신 건가요?

일단 아래와 같이 기본적인 조인문을 작성하고, 조인 순서를 강제하는 힌트를 추가하는 방법을 쓸 수 있습니다. (DBMS 마다 힌트 문법이 다르니, 그 부분은 검색해 보세요)

SELECT A.AAAA, A.BBB 
FROM TABLE B
    INNER JOIN TABLE C ON C.AAA = B.AAA
    INNER JOIN TABLE A ON A.AAA = B.AAA;

서브쿼리를 꼭 써야하는 이유가 있다면, A.AAA = B.AAA 를 서브쿼리 바깥에 ON절로 만드세요.


by 미들타이거 [2019.05.21 10:07:00]

감사합니다~기존쿼리가 저렇게 되있었습니다.저는 그래서 INNER JOIN 안에 꺼가져오고

ON 절에서 조건을 주어 조인했습니다.

SELECT A.AAAA, A.BBB 

        FROM TABLE A

                 INNER JOIN(

                   SELECT B.AAA

                            , B.BBB

                    FROM TABLE B, TABLE C

                   WHERE B.AAA = C.AAA

                 )

               ON A.AAA = B.AAA

이렇게요~

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