>  Q&A  >  본문

CASE를 사용하여 조건부로 가격*수량을 얻는 방법

sale_price가 있는 경우 sale_price * 수량을 사용하여 총 가격을 나타냅니다. sale_price가 없는 경우 총 가격을 Price_origin * 수량으로 표현해야 합니다.

아래와 같이 CASE를 사용해 보았으나 오류가 발생했습니다.

오류 1064(42000): SQL 구문에 오류가 있습니다. ') )AS 제품 FROM 사용자 u JOIN cart_order c_o ON c_o.user_id = u'(11번째 줄)에 대한 MySQL 서버 버전 설명서를 확인하세요. 사용할 문법을 수정하세요. 근처

내가 뭘 잘못했나요? 다른 방법이 있나요? 도움이 필요해요.

const readUserCart = async userId => {
  const userCart = await myDataSource.query(
    `SELECT u.id AS userId, u.name AS userName,
    JSON_ARRAYAGG(
        JSON_OBJECT(
          'productName', p.name, 
          'quantity', c_o.quantity,
          'priceOrigin', REPLACE(p.price_origin, '.', ','),
          'salePrice', REPLACE(p.sale_price, '.', ','),
          'productThumbnail', t_i.default_img,
          'status', c_o.status,
          'price', CASE 
                  WHEN p.sale_price = null 
                  THEN REPLACE(p.price_origin * quantity, '.', ',') 
                  ELSE REPLACE(p.sale_price * quantity, '.', ',')
        )
      )AS products
    FROM users u
    JOIN cart_order c_o ON c_o.user_id = u.id
    JOIN products p ON p.id = c_o.product_id
    WHERE u.id = ?
    GROUP BY u.id`,
    [userId]
  );
  return userCart;
};

P粉506963842P粉506963842216일 전483

모든 응답(1)나는 대답할 것이다

  • P粉138711794

    P粉1387117942024-04-04 17:11:47

    "sale_price is null"과 "sale_price = null"을 비교해 보세요. 아마도 도움이 될 것입니다.

    회신하다
    0
  • 취소회신하다