Впервые я работаю с CASE Logic в операторах SQL. Все работает, если я удаляю операторы CASE, поэтому SQL действителен без него.
Мне нужно рассчитать общую цену товара на основе нескольких вещей.
Если "Цена продажи" активна И "Option Upcharge" имеет значение, общее количество: Qty * (Цена продажи + Option Upcharge)
Если "Цена продажи неактивна И" Option Upcharge "имеет значение, общее количество: Qty * (Price + Option Upcharge)
Если "Цена продажи" активна И "Option Upcharge" имеет значение NO, общее количество: Qty * Цена продажи
Если "Цена продажи неактивна И" Option Upcharge "имеет значение NO, общее количество: Qty * Price
Если опция не была добавлена, значение для tblproduct_options.option_upcharge равно NULL на выходе.
Спасибо за помощь.
Бретт
Вот мой SQL:
SELECT tblshopping_cart.session_id, tblshopping_cart.product_id, tblshopping_cart.product_qty, tblshopping_cart.product_option, tblproducts.product_title, tblproducts.product_price, tblproducts.product_sale_price_status, tblproducts.product_sale_price, tblproduct_options.option_text, tblproduct_options.option_upcharge,
CASE
WHEN (tblproducts.product_sale_price_status = 'Y')
CASE
WHEN (tblproduct_options.option_upcharge IS NOT NULL)
THEN (tblshopping_cart.product_qty * (tblproducts.product_sale_price + tblproduct_options.option_upcharge))
ELSE (tblshopping_cart.product_qty * tblproducts.product_sale_price)
END
ELSE
CASE
WHEN (tblproduct_options.option_upchage IS NOT NULL)
THEN (tblshopping_cart.product_qty * (tblproducts.product_price + tblproduct_options.option_upcharge))
ELSE (tblshopping_cart.product_qty * tblproducts.product_price)
END
END AS product_total
FROM tblshopping_cart
INNER JOIN tblproducts ON tblshopping_cart.product_id = tblproducts.product_id
LEFT JOIN tblproduct_options ON tblshopping_cart.product_option = tblproduct_options.option_product_id
ORDER BY tblshopping_cart.product_qty ASC
Сбой с сообщением:
CASE
WHEN (tblproduct_options.option_upcharge IS NOT NULL)
THEN (tblshopping_' at line 4