티스토리 뷰

 

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

문제를 보자.

 

 

이번 문제를 풀며 LEFT 조인을 처음 사용해 봤다.

 

입양은 왔지만, 나가지 못한 아이들을 찾아야 한다.

 

INS 테이블에 OUTS 테이블을 LEFT JOIN으로 붙인 후, OUTS 칼럼값이 비어있는 데이터를 고르면 원하는 정보를 불러올 수 있다.

 

조건

1. 입양 왔지만, 입양가지 못한 친구들 찾기

 

2. 검색된 결과 중 3개만 조회하기

 

쿼리

SELECT *
FROM (SELECT I.NAME , I.DATETIME
    FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O
    ON I.ANIMAL_ID = O.ANIMAL_ID
    WHERE O.ANIMAL_ID IS NULL
    ORDER BY I.DATETIME
    )
WHERE ROWNUM < 4
;

 

이번 문제에서는 생각 외로 부딪히는 부분이 있었다.

 

서브쿼리를 사용하여 데이터를 불러올 때, 서브쿼리의 결과 테이블에 이름을 명시하고

 

테이블이름. 칼럼명, 으로 조회 시 에러가 생긴다.

 

뤼튼에도 여러 번 물어봤지만.. 원인을 찾을 수가 없다.

 

=======================================================

 

포스팅을 마무리하고 이런저런 시도를 하다 발견한 사실이 있다.

 

서브쿼리 내부에 테이블을 2개 호출하였고 "*"을 통해 각 테이블의 모든 DATETIME을 출력받았다.

 

따라서 외부 SELECT 절에서는 DATETIME이라고 명시하면 서브쿼리의 2개의 DATETIME이 존재하기에 발생하는 문제였다.

 

해당 부분을 해결할 수 있는 쿼리를 보자.

 

쿼리

SELECT NAME, DATETIME
FROM (SELECT I.NAME , I.DATETIME
    FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O
    ON I.ANIMAL_ID = O.ANIMAL_ID
    WHERE O.ANIMAL_ID IS NULL
    ORDER BY I.DATETIME
    )
WHERE ROWNUM < 4
;

 

 

문제를 발견했고, 스스로 탐구하는 과정 중에 배움을 챙겨 기쁜 날이다.

 

댓글