SQL - Programmers2

김재령·2022년 2월 26일
0

DB

목록 보기
9/15
  1. ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.

  2. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는

각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

  1. ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다.

  2. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.

  3. ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.

--> on animal_outs.animal_id = animal_ins.animal_id

  1. ANIMAL_OUTS 테이블에서
  • Allie의 ID는 ANIMAL_INS에 없으므로, Allie의 데이터는 유실되었습니다.
  • Gia의 ID는 ANIMAL_INS에 있으므로, Gia의 데이터는 유실되지 않았습니다.
  • Spice의 ID는 ANIMAL_INS에 없으므로, Spice의 데이터는 유실되었습니다.

--> animal_outs에서 allie와 spice의 데이터를 뽑아내면 되는 거다
--> 주인공쪽으로 방향을 잡아서 outer조인해준다
--> 여기서 주인공은 animal_outs이다
--> 그럼 animal_outs left outer join animal_ins 라고 지정해 주면 된다

--> animal_outs.animal_id 와 animal_ins.animal_id 가 외래키이니까 동일하게 가지고 있을건데
--> animal_ins쪽에서 빈 값이고 animal_outs쪽에는 있는 값을 가지고 오면 된다

주인공은 animal_outs

select animal_outs.animal_id, animal_outs.name
from animal_outs left outer join animal_ins
on animal_outs.animal_id = animal_ins.animal_id
where animal_ins.animal_id is null
order by animal_outs.animal_id;

--> 결론은 animal_outs에서 값을 가져와야 하기 떄문에 animal_outs left join animal_ins 를 사용해서 포커스를 outs에 맞춤
--> 그리고 animal_outs.animal_id와 animal_ins.animal_id가 외래키인 것을 이용해서
--> animal_ins.animal_id가 null값은 것을 animal_outs.animal_id에서 찾아서 가지고 오는 것이다

profile
with me

0개의 댓글