상세 컨텐츠

본문 제목

프로그래머스 LEVEL3 [없어진 기록 찾기] ORACLE , MYSQL

DataBase/프로그래머스

by Chan.94 2021. 9. 16. 10:01

본문

반응형

프로그래머스 DB 문제가 있길래 풀어보았다.

원래 있었나??..

 

OUTER JOIN에 관한 문제이며 아래 링크에서 문제를 확인할 수 있다.

https://programmers.co.kr/learn/courses/30/lessons/59042?language=oracle 

 

코딩테스트 연습 - 없어진 기록 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr


작성 SQL

MYSQL, ORACLE

SELECT AOUT.ANIMAL_ID, AOUT.NAME
FROM ANIMAL_OUTS AOUT LEFT OUTER JOIN ANIMAL_INS AINS
                                  ON AOUT.ANIMAL_ID = AINS.ANIMAL_ID
WHERE 1=1
AND AINS.ANIMAL_ID IS NULL
ORDER BY AOUT.ANIMAL_ID
;

ORACLE

SELECT AOUT.ANIMAL_ID
      ,AOUT.NAME
FROM ANIMAL_OUTS AOUT,
     ANIMAL_INS AINS

WHERE 1=1
AND AOUT.ANIMAL_ID = AINS.ANIMAL_ID(+)
AND AINS.ANIMAL_ID IS NULL
ORDER BY AOUT.ANIMAL_ID
;
WHERE 1=1

필자는 SQL을 작성할 때 위와같이 WHERE 절을 시작한다.

이유는 두 가지가 있다.

 

1.

SQL을 작성하다 조건 한개를 주석 처리하고 보아야 하는 경우가 생길 수 있다.

만약 WHERE절에 있는 조건을 주석처리한다면?

다른 AND 절을 WHERE로 변경해주어야 한다.

이런 수고를 덜고자 WHERE 1=1로 시작한다.

 

2.

이 경우도 1번 경우와 비슷하다.

개발을 하다 보면 동적 SQL을 작성하게 될 것이다.

만약 WHERE절에 있는 조건을 if문으로 감싸야한다면?

이 경우 또한 다른 AND 절을 WHERE로 변경해주어야 한다.

 

 

반응형

관련글 더보기

댓글 영역

>