Programmers/Oracle

[ LEFT/RIGHT OUTER JOIN ] [ NOT IN ] - 한쪽에만 있는 정보 뽑아오기

giggs 2022. 6. 3. 10:36

 

 

 

#문제 설명 

  • 기관에 들어온 기록은 없고(유실)
  • 입양 보냈다는 기록은 있는 상태의
  • 동물 id와 이름을 조회

 

 

 

 

 

 

 


 

 

 

# 풀이 1 - LEFT OUTER JOIN 을 이용하여 풀이

 

 

 

 

 

 


 

 

 

 

# 풀이 2 - RIGHT OUTER JOIN 을 이용하여 풀이

 

 

 

 

 

 

 

+ AND B.NAME IS NOT NULL 조건 안 해주면

+ RIGHT OUTER JOIN 이기 때문에 입양 테이블 데이터 다 살려줌

+ 기관에 들어온 기록이 없는 동물이 맞지만, 입양된 기록도 없는 동물이다. 조건에 맞지 않음

 

 

 

 

 

 

 


 

 

 

 

 

## LEFT OUTER JOIN 사용한 경우

  • :: 결과표에 왼쪽 테이블 기준 :
  • 왼쪽 테이블에서 조건에 맞지 않아서 매칭 안된 - 남아있는 ROW 모두 출력
  • 오른쪽 테이블 있는 - 매칭 안된 데이터 ROW들은 안 나옴

 

 

 

## RIGHT OUTER JOIN 사용한 경우

  • :: 결과표에 오른쪽 테이블 기준 : 
  • 오른쪽 테이블에서 조건에 맞지 않아서 매칭 X - 남아있는 ROW 모두 출력
  • 왼쪽 테이블에 있는 - 매칭 안된 데이터 ROW들은 안 나옴 

 

 

 

 


 

 

 

 

# 풀이 3 - NOT IN 함수를 이용하여 풀이

 

 

 

 

 

 

 

 

 


 

 

 



REVIEW


JAVA 문제 풀이때도 그랬지만 역시 함수를 알고
적절하게 사용하면 코드도, 쿼리도 간단해지는구나 느꼈다.

LEFT JOIN과 RIGHT JOIN을 실습해 볼 수 있는
문제라서 좋았고, 조금 더 이해할 수 있었다.

실제 어느 상황에서 응용 가능할지는
추후에 더 알아보아야할 것 같아서
제목은 한쪽에만 있는 정보 가져오기로 지었다.