Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mendapatkan harga*kuantiti secara bersyarat menggunakan CASE

Jika saya mempunyai harga_jualan, saya akan menggunakan harga_jualan * kuantiti untuk mewakili jumlah harga, Jika anda tidak mempunyai harga_jualan, anda perlu menyatakan jumlah harga sebagai kuantiti Price_origin *.

Saya cuba menggunakan CASE seperti di bawah tetapi mendapat ralat ini.

Ralat 1064 (42000): Terdapat ralat dalam sintaks SQL anda semak manual untuk versi pelayan MySQL anda untuk ') )AS produk DARI pengguna u JOIN cart_order c_o ON c_o.user_id = u' pada baris 11 Tatabahasa yang betul untuk digunakan berdekatan

Apa salah saya? Adakah terdapat kaedah lain? Saya perlukan pertolongan.

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 hari yang lalu484

membalas semua(1)saya akan balas

  • P粉138711794

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

    Cuba bandingkan "harga_jualan adalah batal" dengan "harga_jualan = batal". Mungkin ia membantu anda.

    balas
    0
  • Batalbalas