문제
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다
SELECT I.ANIMAL_ID, I.NAME
from ANIMAL_INS as I
join ANIMAL_OUTS as O
on I.ANIMAL_ID = O.ANIMAL_ID
where I.DATETIME >O.DATETIME
order by I.DATETIME
보호 시작일보다 입양일이 더 빠른 동물의 아이디 조건을 보고 처음에
where O.DATETIME > I.DATETIME
이렇게 적고 틀렸다. 관리자의 실수로 입양일이 잘못 입력되었다고 하는데 이렇게 적으면 잘 적은게 되어버린다. 들어오고 나가는 게 맞으니까. 나가고 들어오는게 잘못된 데이터고 내가 찾아야하는 문제니까
이 점을 고려해서 아래처럼 적으면 되었다. 날짜 비교시 신중하게 풀어야겠다
where I.DATETIME >O.DATETIME
아직 어쩔때 inner join 을 쓰고 left join을 써야하는지 잘 모르겠다.
그래서 사진을 가져와봤다.
더 많이 풀어봐야 감이 오겠지만
내가 헷갈린 이유는 보호소에 들어온 동물은 있어도 아직 입양을 안 간 동물이 있으면 두 테이블의 행 개수가 맞지 않을 텐데 inner join 을 해도 되나? 라는 고민을 했다.
on 절을 통해 데이터가 양쪽 다 있는 값만을 join 할 수 있으니까 상관없을 것 같다.

'SQL' 카테고리의 다른 글
| SQL 프로그래머스 59045 보호소에서 중성화한 동물 (0) | 2024.01.20 |
|---|---|
| SQL 프로그래머스 133027 주문량이 많은 아이스크림들 조회하기 (0) | 2024.01.20 |
| SQL 프로그래머스 59042 없어진 기록 찾기 (0) | 2024.01.19 |
| SQL 프로그래머스 144854 조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2024.01.19 |
| SQL 프로그래머스 131533 상품 별 오프라인 매출 구하기 (0) | 2024.01.19 |