드디어 대망의 JOIN이다.
소마 코테를 준비하며 SQL을 벼락치기...하고 있는 지금 가장 출제율도 높고, 헷갈릴수 있는 JOIN의 개념을 문제들과 함께 정리해 보고자 한다.
교집합
SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key;
왼쪽 집합
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key;
왼쪽 집합
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key;
합집합
오른쪽 테이블 B와 일치하는 왼쪽 테이블 A의 행은 결합하며, 일치하지 않는 행도 포함해서 두 테이블의 모든 행을 반환
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key;
입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 조회해야한다.
따라서, 입양을 간 정보가 담긴 OUT 테이블에는 있고, 보호소에 들어온 정보가 담긴 INS에는 없는 행을 ID를 기준으로 LEFT JOIN 한다.
-> OUT LEFT JOIN INS
접근 방식
:
SELECT
-- 코드를 입력하세요
SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS OUTS
LEFT JOIN ANIMAL_INS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL
ORDER BY OUTS.ANIMAL_ID ASC