[SQL/코드카타] 프로그래머스 36번 - 보호소에서 중성화한 동물(연산자 오류)

36번 : 보호소에서 중성화한 동물

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제를 읽고 열심히 호기롭게 쿼리문을 작성하였다.

SELECT i.animal_id
        , i.animal_type
        , i.name
FROM animal_ins AS i
INNER JOIN animal_outs AS o
ON i.animal_id=o.animal_id
WHERE i.sex_upon_intake LIKE '%intact%' AND (o.sex_upon_outcome LIKE '%spayed%', 
                                             o.sex_upon_outcome LIKE '%neutered%')
ORDER BY o.animal_id ASC 
;

그러나,,, 에러 발생⁉️

정확한 줄 알았던, 쿼리를 눈이 빠져라 들여다보기 시작했다....👀 👀 👀

도저히 계속해서 쳐다보다간 큰 일이 날 듯 하여 저녁시간 직전에 튜터님 방문

에러문에서 'Operand' 는 연산자 라는 뜻으로, 연산자는 1개의 컬럼만 포함해야 한다는 사실을 배우게 됨!!!

AND 절에서 쉼표(,)로 이어진 두개의 컬럼으로 표현되어 에러가 발생함

따라서 쉼표(,)가 아니라 둘을 이어줄 and 나 or을 써야하는데, 해당 문제에서는 둘 중 하나인 경우도 포함이므로 or을 썼어야 한다.

 

최종 정답 쿼리문

SELECT i.animal_id
        , i.animal_type
        , i.name
FROM animal_ins AS i
INNER JOIN animal_outs AS o
ON i.animal_id=o.animal_id
WHERE i.sex_upon_intake LIKE '%intact%' AND (o.sex_upon_outcome LIKE '%spayed%' or 
                                             o.sex_upon_outcome LIKE '%neutered%')
ORDER BY o.animal_id ASC 
;

 

 

앞으로 연산자가 있을 때에는 하나의 컬럼만 포함하도록 주의해야겠다‼️