ЕСЛИ в случае, когда mysql

#mysql

#mysql

Вопрос:

предположим, у меня есть 3 таблицы

порядок таблиц

  ---- ------------- 
| id | total_price |
 ---- ------------- 
|  1 |       50000 |
 ---- ------------- 
 

таблица order_detail

  ---- ---------- ------------ ----------- 
| id | order_id | product_id | bundle_id |
 ---- ---------- ------------ ----------- 
|  1 |        1 |         20 |         1 | 
|  2 |        1 |         21 |         1 |  
|  3 |        1 |         22 |         2 |  
|  4 |        1 |         23 |         2 |
|  5 |        1 |         24 |      NULL |      
 ---- ---------- ------------ ----------- 
 

пакет таблиц

  ---- ---------- --------- ----------------- 
| id | order_id | type_id | discount_amount |
 ---- ---------- --------- ----------------- 
|  1 |        1 |       6 |           23000 |
|  2 |        1 |       6 |           22000 |
|  3 |        1 |       2 |            5000 |
 ---- ---------- --------- ----------------- 
 

с order.id = order_detail.order_id
и order_detail.bundle_id = bundle.id

как мы можем видеть, некоторый product_id имеет тот же bundling_id, поэтому я хочу выполнить эти условия

  1. ЕСЛИ type_id != 6, ТО 0 для каждого product_id
  2. ЕСЛИ product_id с type_id != 6 имеет тот же bundle_id, то для каждого product_id с тем же bundle_id просто появляется один discount_amount, а другой заполняется ‘0’

для этих условий я делаю этот запрос

   SELECT od.product_id, 
IF(b.type_id != 6, 0, (this is query case when to condition 2, which i still searching it how to solve it))
    FROM order_discount od JOIN bundle b ON od.bundle_id = b.id
 

ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

  ------------ ----------------- 
| product_id | discount_amount |
 ------------ ----------------- 
|         20 |           23000 |
|         21 |               0 |
|         22 |           22000 |
|         23 |               0 |
|         24 |               0 |
 ------------ ----------------- 
 

Комментарии:

1. Пожалуйста, добавьте скрипку — я знаю, что вы знаете, как это сделать..

2. Оба product_is 20 и 21 ссылаются на bundle_id 1. Почему скидка применяется к 20, а не к 21? Оба продукта относятся к пакету с типом = 6, и, следовательно, они не соответствуют вашим правилам 1 и 2.

3. является ли 20 или 21 для bundle_id 1, он появится только один раз, а не дважды

4. Оба ваших правила работают с IF type_id != 6 условием. Все ваши пакеты имеют type_id = 6 . Так что для них нет правила.

5. хорошо, позвольте мне отредактировать таблицу