앞서 생성했던 ERD 를 기반으로 쿼리를 작성했다.
크게는 3 페이지에 대한 쿼리를 작성했다.
상품 디테일 페이지 / MY 쿠팡 내 주문 리스트 페이지 / MY 쿠팡 내 주문 상세 페이지 로 상품 디테일 페이지에는 상품 디테일 정보를 조회하는 쿼리, 리뷰 조회 쿼리, 상품 구매 시 추가 쿼리(복잡한 절차 제외) 총 3가지의 쿼리를 작성했다. 남은 2개의 페이지에 대해서는 각각 주문 리스트 조회 쿼리, 주문 상세 조회 쿼리 한 가지의 쿼리만 작성했다.
상품 디테일 정보 조회 쿼리
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 를 가진 상품만 조회LEFT JOIN 사용해 모든 옵션 반환리뷰 조회 쿼리
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 테이블에서 리뷰를 작성한 고객의 이름 반환상품 구매 추가 쿼리
INSERT INTO orders (customer_id, created_at, total_price)
VALUES (?, CURRENT_TIMESTAMP, ?);
INSERT INTO 을 이용해 새로운 주문을 db 에 추가VALUES 를 통해 데이터 값 입력 및 생성CURRENT_TIMESTAMP 를 통해 구매 시간 자동 설정 SELECT
o.id AS order_id,
o.created_at,
o.total_price
FROM orders o
WHERE o.customer_id = ?;
WHERE 을 사용해 특정 ID 를 가진 고객의 주문만 조회 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 을 사용해 정보 반환LEFT JOIN 을 통해 옵션 정보 반환