Как использовать операторы case в MySQL, используя соединения? - PullRequest
0 голосов
/ 21 ноября 2018

Я работаю над продуктом, категорией и скидкой.Я сделал для продукта скидку.Но проблема во время расчета category_discount.Вот мой код:

SELECT products.id, products.product_name, products.product_price, products.product_discount, categories.category_discount,
(CASE WHEN products.product_discount = 0  THEN products.product_price
      WHEN products.product_discount != 0 THEN products.product_price - ( products.product_price *  products.product_discount)/100
      WHEN categories.category_discount !=0 THEN products.product_price - ( products.product_price *  categories.category_discount)/100
   END) AS amount
 FROM products
 join 
categories
on products.category_id = categories.id

См. Мой результат ниже, он не вычисляет category_discount для первой строки: - enter image description here

1 Ответ

0 голосов
/ 21 ноября 2018

Тогда, когда операторы оцениваются по порядку, пока один из них не будет выполнен.В первом ряду выполняется первое условие When, поэтому скидка отсутствует.Вместо этого попробуйте:

 WHEN products.product_discount = 0  AND categories.category_discount = 0   THEN products.product_price

Или даже измените порядок следующим образом:

 SELECT products.id, products.product_name, products.product_price, products.product_discount, categories.category_discount,
 (CASE WHEN products.product_discount != 0 THEN products.product_price - ( products.product_price *  products.product_discount)/100
  WHEN categories.category_discount !=0 THEN products.product_price - ( products.product_price *  categories.category_discount)/100
    ELSE products.product_price
 END) AS amount
 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...