ERD 기반 쿼리 작성

허수민·2023년 10월 20일

ERD 확인하기

앞서 생성했던 ERD 를 기반으로 쿼리를 작성했다.

크게는 3 페이지에 대한 쿼리를 작성했다.
상품 디테일 페이지 / MY 쿠팡 내 주문 리스트 페이지 / MY 쿠팡 내 주문 상세 페이지 로 상품 디테일 페이지에는 상품 디테일 정보를 조회하는 쿼리, 리뷰 조회 쿼리, 상품 구매 시 추가 쿼리(복잡한 절차 제외) 총 3가지의 쿼리를 작성했다. 남은 2개의 페이지에 대해서는 각각 주문 리스트 조회 쿼리, 주문 상세 조회 쿼리 한 가지의 쿼리만 작성했다.

1. 상품 디테일 페이지

  1. 상품 디테일 정보 조회 쿼리

         SELECT 
           p.name AS product_name, 
           p.description, 
           p.base_price,
           po.option_name,
           po.additional_price
         FROM products p
         LEFT JOIN product_options po ON p.id = po.product_id
         WHERE p.id = ?;
    • WHERE 을 사용해 특정 ID 를 가진 상품만 조회
      • 상품 ID = ‘?’ 에 대한 기본 정보와 옵션 조회
    • LEFT JOIN 사용해 모든 옵션 반환
      • 옵션이 없다면 정보만 반환
  2. 리뷰 조회 쿼리

     SELECT 
       r.rating, 
       r.comment, 
       r.created_at,
       u.username
     FROM reviews r
     JOIN users u ON r.customer_id = u.id
     WHERE r.product_id = ?;
    • WHERE 을 사용해 특정 ID 를 가진 상품의 리뷰만 조회
    • JOIN 을 통해 users 테이블에서 리뷰를 작성한 고객의 이름 반환
  3. 상품 구매 추가 쿼리

    INSERT INTO orders (customer_id, created_at, total_price) 
    VALUES (?, CURRENT_TIMESTAMP, ?);
    • INSERT INTO 을 이용해 새로운 주문을 db 에 추가
      • orders 테이블에 새로운 데이터 추가
    • VALUES 를 통해 데이터 값 입력 및 생성
      • 고객 ID 와 총 금액은 입력 받음
      • CURRENT_TIMESTAMP 를 통해 구매 시간 자동 설정

2. MY 쿠팡 내 주문 리스트 페이지

   SELECT 
     o.id AS order_id, 
     o.created_at, 
     o.total_price
   FROM orders o
   WHERE o.customer_id = ?;
  • WHERE 을 사용해 특정 ID 를 가진 고객의 주문만 조회

3. MY 쿠팡 내 주문 상세 페이지

 SELECT 
   o.id AS order_id, 
   o.created_at, 
   o.total_price,
   p.name AS product_name,
   po.option_name,
   od.quantity,
   od.unit_price
 FROM orders o
 JOIN order_details od ON o.id = od.order_id
 JOIN sellers_products sp ON od.seller_product_id = sp.id
 JOIN products p ON sp.product_id = p.id
 LEFT JOIN product_options po ON od.product_option_id = po.id
 WHERE o.id = ?;
  • WHERE 을 사용해 특정 ID 를 가진 주문의 상세 정보만 조회
  • JOIN 을 사용해 정보 반환
    • order_details 테이블에서 수량 및 개당 금액 정보 반환
    • sellers_products 테이블에서 판매자가 입력한 상품 정보 반환
    • products 테이블에서 상품의 정보 반환
  • LEFT JOIN 을 통해 옵션 정보 반환
profile
KAU SW 3rd

0개의 댓글