Study/SQL

[프로그래머스 SQL] 오랜 기간 보호한 동물(1)

delay100 2024. 1. 15. 14:07
728x90
반응형
SMALL

코딩테스트 연습 > JOIN > 오랜 기간 보호한 동물(1)

난이도: Lv.3 

언어: MySQL

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

실패

SELECT a.NAME, a.DATETIME
FROM ANIMAL_INS a
   JOIN ANIMAL_OUTS b ON a.ANIMAL_ID != b.ANIMAL_ID
GROUP BY a.ANIMAL_ID
ORDER BY a.DATETIME
LIMIT 3

실패이유1.

JOIN을 할 때는 두 테이블의 조건을 기재하고, 테이블을 연결을 해야하는데 지금 코드는 연결을 기재하고 있지 않습니다.

 

* chatGPT 참고

SQL 쿼리에서 JOIN 절이 올바르게 작성되지 않은 것 같습니다. JOIN 절은 일반적으로 특정 조건에 따라 두 테이블을 연결하는 역할을 합니다. 여기서는 입양된 동물과 보호소에 있는 동물을 연결해야 합니다.

제공한 쿼리에서는 JOIN의 조건이 a.ANIMAL_ID != b.ANIMAL_ID로 되어 있습니다. 이는 ANIMAL_ID가 서로 다른 경우에 조인되도록 설정되어 있습니다. 그러나 일반적으로 JOIN은 두 테이블 간에 일치하는 행을 찾는 데 사용됩니다.

 

성공

SELECT a.NAME, a.DATETIME
FROM ANIMAL_INS a
   LEFT JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID
WHERE 1=1
AND b.ANIMAL_ID IS NULL
GROUP BY a.ANIMAL_ID
ORDER BY a.DATETIME
LIMIT 3

LEFT JOIN을 해준 후 JOIN된 테이블에서 아래와 같이 비어있는 ANIMAL_ID(ANIMAL_OUTS) 값을 확인해 출력하면 됩니다. 

현재 쿼리에서 SELECT *한 결과

*참고 chatGPT

'실패' 부분에 기재했습니다.


코드에 질문이 있으시면 댓글을 달아주세요. 최대한 빠른 시일 내에 답변해드리겠습니다. 

봐주셔서 감사합니다.

728x90
반응형
LIST