Выберите количество (*) и выберите сумму (my_data) после синтаксиса вставки - ошибка # 1064 - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в SQL, и даже в программировании, недавно я обнаружил триггеры, и я хочу рассчитать максимальное количество активных линий и общую сумму активных весов PS: активные записи определены с 'cancled = 0' У меня была ошибка # 1064 около строки, где я объявил свою переменную (строка 2)

Я запускаю это в триггерах PHPMYADMIN (MySQL).

BEGIN
DECLARE @max_rows int;
DECLARE @max_tare int;
SET @max_rows = SELECT COUNT(*) FROM history WHERE cancled = 0;
SET @max_tare= SELECT SUM(tare) FROM history WHERE cancled = 0;
UPDATE max_tare
SET max_row  = @max_rows,
    max_tare = @max_tare
WHERE id = 1
END

Я ожидал, что я обновил строку 1 с максимальным количеством строк и общей суммой активных весов, но у меня есть ошибка

MySQL ответил: # 1064 - Синтаксическая ошибка рядом с '@max_rows int; DECLARE @max_tare int; SET @max_rows = ВЫБЕРИТЕ СЧЕТЧИК (*) ОТ его 'в строке 2

после комментария Павла я изменил код так:

BEGIN
DECLARE max_r int;
DECLARE max_t int;
SET max_r = SELECT COUNT(*) FROM history WHERE cancled = 0;
SET max_t = SELECT SUM(tare) FROM history WHERE cancled = 0;
UPDATE max_tare
SET max_row  = max_r,
    max_tare = max_t
WHERE id = 1
END

это новая ошибка:

MySQL ответил: # 1064 - Синтаксическая ошибка рядом с SELECT COUNT (*) FROM история ГДЕ cancled = 0; SET max_t = SELECT SUM (тара) FR 'в строке 4

ты заранее.

1 Ответ

0 голосов
/ 23 мая 2019

спасибо @paul Spiegel и @forpas за то, что этот код помог решить проблему

IF(NEW.mix != '') THEN
UPDATE max_tare
SET max_row  = (SELECT COUNT(*)  FROM history WHERE nom LIKE NEW.mix),
    max_tare = (SELECT SUM(tare) FROM history WHERE cancled = 0)
WHERE id = 1;
ELSE
UPDATE max_tare
SET max_row  = (SELECT COUNT(*)  FROM history WHERE cancled = 0),
    max_tare = (SELECT SUM(tare) FROM history WHERE cancled = 0)
WHERE id = 1;
END IF;
END

это сработало для меня, спасибо, ребята

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...