Это 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
Вы можете манипулировать своим предложением 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