[프로그래머스][없어진 기록찾기] SQL - JOIN
안녕하세요 Dibrary입니다.
이번엔 간단한 JOIN문제인데, 어문데서 시간을 꽤나 허비했던 문제를 정리해보겠습니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제는 JOIN 카테고리에 있는 문제라서 JOIN을 써야 하는 것을 알 수도 있지만,
문제의 내용을 보고도 JOIN을 써야 함을 알 수 있습니다.
이 문제를 보고 제일 먼저 든 생각은,
- 한쪽엔 있고, 한 쪽엔 없는 것을 '구분' 해야 하고
- 그 중에 없는 것을 뽑아다가 보여줘야 한다.
입니다.
저는 먼저 문제를 파악해보는데 중점을 뒀었습니다.
예를 들면, 데이터가 몇 개고, 같은 데이터는 몇 개인지.
우선 ANIMAL_INS, ANIMAL_OUTS 두 테이블 모두 데이터는 100 row로 구성되었습니다.
그리고 ANIMAL_ID가 같은 것의 갯수를 확인해 보았습니다.
오, 그러니까 총 100개 중에 96개는 같다고 하니, 4개는 짝이 안 맞는 것이고, "JOIN을 써서 구하고자 하는 것은 4개의 row데이터구나~" 는 것을 알 수 있습니다.
먼저 답부터 공개해 보자면, 아래와 같습니다.
저는 OUTS를 오른쪽에 뒀고, 왼쪽에 빈 칸으로 나오는 것을 추린 후에 ANIMAL_ID, NAME을 나타나게 했죠.
여기서, 제가 시간을 꽤 날렸던 부분은 ANIMAL_ID, NAME을 출력할 때, ANIMAL_OUTS로 해야 한다는 겁니다.
그것도 모르고 저는 ins.ANIMAL_ID, ins.NAME 이렇게 했더니 아예 아무것도 안나오는게 아니겠어요?
출력을 할 때는 반드시 모든 데이터가 있는 테이블을 이용해서 지정해야 한다는 것을 알게 되었습니다.