RISK IT

[TIL31_23.2.8] [1st-project] 상품 조회 SQL 쿼리문 작성 본문

IT/TIL

[TIL31_23.2.8] [1st-project] 상품 조회 SQL 쿼리문 작성

nomoremystery 2023. 2. 11. 00:59
반응형

작업 내용

데이터베이스 구축 작업이 merge된 이후에 상품 조회와 관련된 쿼리문을 작성하기 시작했다.
Foundation 1, 2차 때도 SQL 과제를 열심히 따라가긴 했지만 제대로 이해했다는 느낌은 없었다.
그래서 그런지 query문 작성하는게 쉽지는 않았다.
물론 지난 번에 고민했던 내용들이 있어서 확실히 성장한 느낌은 들었다.

기본 products table에 있는 상품 조회하는 코드,
sub 카테고리별로 조회하는 코드를 작성해 보았다.

아래 예시는 메인 카테고리의 상품들을 조회하는 코드

const getProductsForBodyHands = async () => {
  return await mysqlDataSource.query(
    `
    SELECT
      p.sub_category_id,
      JSON_ARRAYAGG(
        JSON_OBJECT(
          "name", p.name,
          "image_url", p.image_url,
          "min_price", (SELECT MIN(price) FROM product_options)
        )
      ) AS product_info
      FROM products p, product_options o, sub_categories sc
      INNER JOIN main_categories mc ON sc.main_category_id = mc.id
      WHERE p.id = o.product_id AND p.sub_category_id=sc.id AND sc.main_category_id = 2
      GROUP BY sub_category_id;
      `
  );
};

예전에 sql과제 할 때는 JSON_ARRAYAGG와 JSON_OBJECT가 잘 이해가 가지 않은 상태로 진행했었지만, 이제는 이해가 잘 간다.

역시 기록은 미리미리 해야되는데, 몰아서 그날 배웠던거 쓰려고 하니까 쉽지 않다. ^^

반응형