포스트

JOIN 기반 메커니즘 - 2

조인 기반 메커니즘 - 2

2. 데이터 연결 관계 파악하기

M:N의 연결관계

  • 일반적으로 M:N 관계의 경우, 중간에 관계 테이블을 이용하여 나타냄

    테이블 사진1

    • 위의 그림과 같이 Products와 Orders 테이블이 Order_items 라는 관계 테이블로 연결 되어있다.

실습 문제 풀기

실습 환경에 대한 설명

실습환경

실습 문제

  • 고객명 Antonio Moreno이 1997년에 주문한 주문 정보를 주문 아이디, 주문일자, 배송일자, 배송 주소를 고객 주소와 함께 구할것.

    1
    2
    3
    4
    5
    
      select customers.contact_name , customers.address , orders.order_id , orders.order_date , orders.shipped_date , orders.ship_address 
      from nw.customers as customers
          join nw.orders as orders on customers.customer_id  = orders.customer_id 
      where customers.contact_name = 'Antonio Moreno'
      and orders.order_date between to_date('19970101', 'yyyymmdd') and to_date('19971231', 'yyyymmdd')
    
  • Berlin에 살고 있는 고객이 주문한 주문 정보를 구할것
  • 고객명, 주문id, 주문일자, 주문접수 직원명, 배송업체명을 구할것.

    1
    2
    3
    4
    5
    6
    7
    
      select customers.contact_name , orders.order_id , orders.order_date , 
          emp.first_name||' '||emp.last_name as employee_name, ship.company_name 
      from nw.customers as customers
          join nw.orders as orders on customers.customer_id  = orders.customer_id 
          join nw.employees as emp on emp.employee_id = orders.employee_id 
          join nw.shippers as ship on ship.shipper_id = orders.ship_via 
      where customers.city = 'Berlin' 
    
  • Beverages 카테고리에 속하는 모든 상품아이디와 상품명, 그리고 이들 상품을 제공하는 supplier 회사명 정보 구할것

    1
    2
    3
    4
    5
    
      select pro.product_id , pro.product_name , sup.company_name 
      from nw.categories as cate 
          join nw.products as pro on cate.category_id = pro.category_id 
          join nw.suppliers as sup on pro.supplier_id = sup.supplier_id 
      where cate.category_name = 'Beverages'
    
  • 고객명 Antonio Moreno이 1997년에 주문한 주문 상품정보를 고객 주소, 주문 아이디, 주문일자, 배송일자, 배송 주소 및
  • 주문 상품아이디, 주문 상품명, 주문 상품별 금액, 주문 상품이 속한 카테고리명, supplier명을 구할 것.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      select cus.contact_name , cus.address , orders.order_id , orders.order_date , 
          orders.shipped_date , orders.ship_address , ord_item.product_id ,
          pro.product_name , ord_item.amount , cate.category_name , sup.company_name 
      from nw.customers as cus
          join nw.orders as orders on orders.customer_id = cus.customer_id 
          join nw.order_items as ord_item on ord_item.order_id = orders.order_id 
          join nw.products as pro on ord_item.product_id = pro.product_id 
          join nw.categories as cate on pro.category_id = cate.category_id 
          join nw.suppliers as sup on pro.supplier_id = sup.supplier_id 
      where cus.contact_name = 'Antonio Moreno'
      and orders.order_date between to_date('19970101', 'yyyymmdd') and to_date('19971231', 'yyyymmdd')  
    
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.