Notice
Recent Posts
Recent Comments
Link
blueorpurple
프로그래머스 연습문제 JOIN 없어진 기록 찾기 본문
https://programmers.co.kr/learn/courses/30/lessons/59042
-- 코드를 입력하세요
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM ANIMAL_OUTS LEFT OUTER JOIN ANIMAL_INS
ON ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID
WHERE ANIMAL_INS.ANIMAL_ID IS NULL
ORDER BY ANIMAL_ID ASC;
테이블에 없는 걸 찾아야 되는 걸 몰라서 헤매다가 WHERE로 IS NULL 하면 되는 걸 알게 돼서 풀었다.
사실 구글링으로 IS NULL을 쓰면 된다는 걸 깨달았다.
이걸 보면
우선 ANIMAL_OUTS 테이블에는 있는데 ANIMAL_INS에는 없는 행을 찾아서 ID 열과 NAME 열을 출력하면 된다.
그래서 1번 줄의 SELECT를 하고,
기준이 되는 테이블이 ANIMAL_OUTS를 왼쪽에 두고 외부 결합을 하기 위해 LEFT OUTER JOIN을 한다. 이때 OUTER을 빼고 LEFT JOIN만 해도 정답이다.
그 다음이 결합 조건인데, OUTS 테이블과 INS 테이블의 ID를 비교해서 같으면 출력한다.
이때 주의할 것은 기준이 되는 테이블이 OUTS라는 것이다.
WHERE 전까지를 실행해보면 OUT에만 있는 데이터가 결과에 나온다.
이 결과에서 WHERE로 INS의 ID가 NULL인 걸 찾으면 된다.
이때 주의해야 할 건 WHERE로 NULL인 걸 찾을 때 NAME이 NULL인 걸 찾으면 틀린 결과가 나온다.
ID가 외래키가 되기 때문이다.
아 연습문제를 푸는 건 오랜만이어서 어려웠다
'SQL' 카테고리의 다른 글
데이터베이스 5주차 : 오라클 첫 실습!! 연결, 테이블 생성, select, insert, 테이블 삭제 (0) | 2021.10.18 |
---|---|
프로그래머스 코딩테스트 문제 : 입양시각 구하기 GROUP BY (0) | 2021.08.26 |
SQL 첫걸음 다 했다 (0) | 2021.08.23 |
SQL 첫걸음 32강 : 테이블 결합 (0) | 2021.08.16 |
SQL 첫걸음 D+21 : 26강 테이블 삭제, 변경 - ALTER TABLE로 기본키를 지정할 수 있을까? 08/06 지정할 수 있다 (0) | 2021.07.25 |
Comments