#mysql
Вопрос:
Я пытаюсь создать процедуру mysql, которая должна проверять температуру и влажность с предыдущего дня до и проверять, находится ли она за пределами установленных границ или нестабильна.
У меня есть таблица, в которой указаны границы для sensor4.
[temp_upper-20, temp_lower-16.] [hum_upper 55, hum_lower 40]
МАКСИМАЛЬНАЯ(температура) со вчерашнего дня составляла 19,51,
МИН(температура) со вчерашнего дня была 19.05.
Что означает, что это внутри и стабильно.
МАКС(гул) = 40,629, МИН(гул) = 37,765.
Это означает, что он был за пределами границ и нестабилен, поэтому эту процедуру следует выполнить и вставить ее в «Avvikstabell».
Но после выполнения кода значение avvik равно НУЛЮ? Это было лучшее, что я мог сформулировать в своем вопросе.
Хотел бы получить некоторую профессиональную помощь в MySQL.
Вот мой код:
BEGIN
DECLARE
temp_upper DECIMAL DEFAULT 0; DECLARE temp_lower DECIMAL DEFAULT 0; DECLARE hum_upper DECIMAL DEFAULT 0; DECLARE hum_lower DECIMAL DEFAULT 0; DECLARE max_temp DECIMAL DEFAULT 0; DECLARE min_temp DECIMAL DEFAULT 0; DECLARE max_hum DECIMAL DEFAULT 0; DECLARE min_hum DECIMAL DEFAULT 0;
SELECT
temp_upper_limit AS temp_upper,
temp_lower_limit AS temp_lower,
humid_upper_limit AS hum_upper,
humid_lower_limit AS hum_lower,
alias
FROM
sensor_settings
WHERE
alias = "Stella Maris";
SELECT
MAX(temp) AS max_temp,
MIN(temp) AS min_temp,
MAX(hum) AS max_hum,
MIN(hum) AS min_hum
FROM
sensor4
WHERE
tidsangivelse >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 1 DAY); IF max_temp > temp_upper OR min_temp < temp_lower OR max_hum > hum_upper OR min_hum < hum_lower THEN
SET
avik = "ekstern";
INSERT INTO klima.avvikstabell(sensor, dato, TYPE)
VALUES(
"sensor4",
CURDATE() - INTERVAL 1 DAY, avik); ELSEIF max_temp - min_temp > 2 OR max_hum - min_hum > 2 THEN
SET
avik = "intern";
INSERT INTO klima.avvikstabell(sensor, dato, TYPE)
VALUES(
"sensor4",
CURDATE() - INTERVAL 1 DAY, avik);
END IF;
END