Как установить значения в триггере MySQL

0

Это mysql-запрос, и я хочу установить avg в переменную, и mb.HELP иногда получает значение null, и я хочу закрыть эти тики. если его нулевое деление 3, когда его нет, разделите 4. Также установите значение для другого столбца на это значение, но запрос получает синтаксическую ошибку;

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с IF IF. NB. NNLL THEN SET @newavg: = (mb.Dynamic_Delivery_Sp) в строке 6

запрос;

CREATE TRIGGER computeColor
AFTER INSERT ON merchant_rates
FOR EACH ROW

   UPDATE merchant_branches as mb
    IF mb.Dynamic_Help  IS NULL THEN
        SET @newavg := (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3
     ELSE 
        SET @newavg := (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4
    END IF;


CASE
    WHEN @newavg >= 9   THEN  mb.Dynamic_Rank_Color = "#FFD300"
   WHEN @newavg >= 8,5  AND @newavg < 9     THEN  mb.Dynamic_Rank_Color = "#FFD300"
   WHEN @newavg >= 8    AND @newavg < 8,5   THEN  mb.Dynamic_Rank_Color = "#FFD320"
   WHEN @newavg >= 7,5  AND @newavg < 8     THEN  mb.Dynamic_Rank_Color = "#FAD300"
   WHEN @newavg >= 7    AND @newavg < 7,5   THEN  mb.Dynamic_Rank_Color = "#CCD300"
   WHEN @newavg >= 6,5  AND @newavg < 7     THEN  mb.Dynamic_Rank_Color = "#FED300"
END
    WHERE mb.id = NEW.Branch_ID
Теги:

1 ответ

0
Лучший ответ

Вы можете манипулировать своим предложением update to -

UPDATE merchant_branches as mb
    SET mb.Dynamic_Rank_Color = CASE 
                                WHEN mb.Dynamic_Help IS NOT NULL
                                THEN
                                    CASE 
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4 >= 9 THEN "#FFD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4 BETWEEN 9 AND 8.5 THEN "#FFD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4 BETWEEN 8.5 AND 8 THEN "#FFD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4 BETWEEN 8 AND 7.5 THEN "#FAD320"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4 BETWEEN 7.5 AND 7 THEN "#CCD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service+mb.Dynamic_Help)/4 BETWEEN 7 AND 6.5 THEN "#FED300"
                                    END
                                WHEN mb.Dynamic_Help IS NULL
                                THEN
                                    CASE 
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3 >= 9 THEN "#FFD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3 BETWEEN 9 AND 8.5 THEN "#FFD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3 BETWEEN 8.5 AND 8 THEN "#FFD320"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3 BETWEEN 8 AND 7.5 THEN "#FAD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3 BETWEEN 7.5 AND 7 THEN "#CCD300"
                                    WHEN (mb.Dynamic_Delivery_Speed + mb.Dynamic_Flavor + mb.Dynamic_Service)/3 BETWEEN 7 AND 6.5 THEN "#FED300"
                                    END
                                END
    WHERE mb.id = NEW.Branch_ID
  • 0
    Иногда mb.Dynamic_Help становится нулевым. Что я буду делать в этом состоянии
  • 0
    Вам не нужно заботиться об этом. SQL будет считать это как ноль от вашего имени.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню