Inner, Outer 조인의 이해
조인의 유형
Inner 조인
Left Outer Join
Right Outer Join
Full Outer Join
실습 문제 풀기
실습 환경에 대한 설명
이전 포스트인 Join, join-2의 테이블 사용
실습 문제
주문이 단 한번도 없는 고객 정보 구하기.
1 2 3 4
select * from nw.customers as cus left outer join nw.orders as orders on orders.customer_id = cus.customer_id where orders.customer_id is null
부서정보와 부서에 소속된 직원명 정보 구하기. 부서가 직원을 가지고 있지 않더라도 부서정보는 표시되어야 함.
1 2 3
select dept.*, emp.ename from hr.dept as dept left outer join hr.emp as emp on emp.deptno = dept.deptno
- Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것.
- 고객명, 주문id, 주문일자, 주문접수 직원명, 배송업체명을 구하되,
만일 고객이 주문을 한번도 하지 않은 경우라도 고객정보는 빠지면 안됨. 이경우 주문 정보가 없으면 주문id를 0으로 나머지는 Null로 구할것.
1 2 3 4 5 6
select cus.contact_name , coalesce(orders.order_id, 0), orders.order_date, emp.first_name||' '||emp.last_name as emp_name, ship.company_name from nw.customers as cus left outer join nw.orders as orders on orders.customer_id = cus.customer_id left outer join nw.employees as emp on emp.employee_id = orders.employee_id left outer join nw.shippers as ship on ship.shipper_id = orders.ship_via where cus.city = 'Madrid'
orders_items에 주문번호(order_id)가 없는 order_id를 가진 orders 데이터 찾기
1 2 3 4
select * from nw.orders as orders left outer join nw.order_items as ord_item on ord_item.order_id = orders.order_id where ord_item.order_id is null
orders 테이블에 없는 order_id가 있는 order_items 데이터 찾기.
1 2 3 4
select * from nw.order_items as ord_item left outer join nw.orders as orders on orders.order_id = ord_item.order_id where ord_item.order_id is null
가장 마지막 두 문제는 결과값이 존재하지 않음
- DB에 컬럼이 제대로 생성되었는지 테스트하기 위해 사용하는 경우 존재
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.




