반응형
[접속 사이트] 프로그래머스 programmers.co.kr
[문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이고, ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸
정보를 담은 테이블이다. 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성하시오.
단, 결과는 보호 시작일이 빠른 순으로 조회해야 합니다.
[나의 풀이]
앞선 문제 풀이 '없어진 기록찾기'와 같이 2개의 테이블을 활용해 문제를 푸는 내용으로 JOIN을 해보려 했으나 원하는 결과 값이 나오지 않았습니다. FULL OUTER JOIN을 통해 전체 데이터 중 ANIMAL_INS.DATETIME > ANIAML_OUTS.DATETIME 조건으로 시행하려 햇으나 계속 오류가 뜨더라구요 ㅠㅠ 이것저것 두드려보다가 EQUI(등가) JOIN을 사용했을 때 올바른 값을 나타냄을 알아냈습니다 ㅠ
EQUI(등가) JOIN - 두 개의 테이블에서 '='를 사용해 같은 값을 조인해 두 테이블을 연결한다 SELECT * FROM a, b WHERE a.<fieldName> = b.<fieldName> |
SELECT a.ANIMAL_ID, a.NAME
from ANIMAL_INS a, ANIMAL_OUTS b
WHERE a.ANIMAL_ID = b.ANIMAL_ID
and a.DATETIME > b.DATETIME
Order by a.DATETIME
[실행 결과]
그런데 왜 EQUI 조인이어야만 하는지 잘 모르겠습니다..
INNER JOIN도 EQUI 조인과 마찬가지로 등가 조인이며 동일한 데이터를 JOIN해 두 테이블을 합치는데 WHERE문이 아닌 ON문을 사용해 동일한 조건을 입력합니다만, 에러가 발생하더군요 ㅠㅠ 이 사유에 대해서는 조금 더 고민해봐야겠습니다..
반응형
'SEO's Study > 프로페셔널한 이야기' 카테고리의 다른 글
프로그래머스 코딩테스트 :: 보호소에서 중성화한 동물 (MySQL) (0) | 2020.09.20 |
---|---|
프로그래머스 코딩테스트 :: 오랜기간 보호한 동물1 (MySQL) (0) | 2020.09.20 |
프로그래머스 코딩테스트 :: 없어진 기록찾기(MySQL) (0) | 2020.09.20 |
프로그래머스 코딩테스트 :: 이름이 없는 동물의 ID 구하기(MySQL) (0) | 2020.09.19 |
프로그래머스 코딩테스트 :: 입양 시각 구하기2 (MySQL) (0) | 2020.09.19 |
댓글