首頁  >  問答  >  主體

如何使用 CASE 有條件地取得價格*數量

如果我有 sale_price,我會用 sale_price * 數量來表示總價, 如果您沒有 sale_price,則需要 Price_origin * 數量來表示總價。

我嘗試使用 CASE 如下,但出現此錯誤。

錯誤1064 (42000):您的SQL 語法有錯誤;檢查與您的MySQL 伺服器版本相對應的手冊,以了解在第11 行的') )AS products FROM users u JOIN cart_order c_o ON c_o.user_id = u' 附近使用的正確語法

我做錯了什麼?還有別的辦法嗎?我需要幫助。

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 天前488

全部回覆(1)我來回復

  • P粉138711794

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

    嘗試將「sale_price is null」與「sale_price = null」進行比較。也許對你有幫助。

    回覆
    0
  • 取消回覆