프로그래머스 - 없어진 기록찾기

JIWOO YUN·2023년 8월 25일
0

SQL문제풀이

목록 보기
1/1
post-custom-banner

문제링크


https://school.programmers.co.kr/learn/courses/30/lessons/59042

생각


보호소에 들어온 기록이 없는 동물 ID와 이름을 ID순으로 조회

입양은 갔지만 보호소에 온 기록이 없는경우

ANIMAL_INS 보호시작일

ANIMAL_OUTS -> 입양 보낸 동물의 정보

입양기록은 있는데 보호소에 기록이 없다.

LEFT JOIN -> LEFT OUTER JOIN을 의미

왼쪽 테이블 기준으로 모든 데이터가 만들어진다.

그렇기 때문에 AI에 ANIMAL_ID가 없는 경우도 AO에 데이터가 있으면 AI.ANIMAL_ID에 NULL이채워지고 만들어진다.

SELECT AO.ANIMAL_ID,AO.NAME,AI.ANIMAL_ID
FROM ANIMAL_OUTS AS AO 
LEFT JOIN ANIMAL_INS AS AI
ON AO.ANIMAL_ID = AI.ANIMAL_ID;

-> 따라서 이와 같이 SQL을 먼저 만들면 내가 원하는 값 뿐만이 아니라 왼쪽 테이블 기준으로 모든 데이터가 만들어진다.

여기서 한번 더 가공해서

SELECT AO.ANIMAL_ID,AO.NAME,AI.ANIMAL_ID
FROM ANIMAL_OUTS AS AO 
LEFT JOIN ANIMAL_INS AS AI
ON AO.ANIMAL_ID = AI.ANIMAL_ID
WHERE AI.ANIMAL_ID IS NULL
ORDER BY ANIMAL_ID ASC;

맨 밑에 AI.ANIMAL_ID가 NULL인 조건을 추가해서 내가 원하는 데이터를 필터링해주고 마지막으로 ID순으로 정렬해주면 문제에서 원하는 결과를 얻을 수 있다.

JOIN 관련해서 생각보다 많이 아는게 없어서 이 링크를 참조했다.
백엔드 개발을 지원하니 SQL부분도 공부를 계속 진행해야겠다.
https://www.w3schools.com/sql/sql_join_left.asp

profile
열심히하자
post-custom-banner

0개의 댓글