У меня есть таблица с разными программами.
При изменении конфигурации программы в мою БД добавляется событие с новыми параметрами.
Имеет несколько параметров: дата и время события , количество дней в неделю, когда оно активно, интенсивность, время начала и время окончания каждого дня.
Я хочу использовать эти данные для создания диаграммы, но сначала мне нужно изменить данные, чтобы сделать их доступными и понятными для библиотеки диаграмм, которую я буду использовать.
Я хочу создать таблицу, в которой у меня будут повседневные мои разные программы и их параметры.
Пример желаемоговывод:
day - program_code - intensity - start - end
01-01-2018 - 39 - 2 - 10 - 11
01-01-2018 - 40 - 4 - 14 - 15
02-01-2018 - 39 - 2 - 10 - 11
02-01-2018 - 40 - 4 - 14 - 15
The data stay the same until an event of configuration appears and changes
the parameters, for example program 39 changes(40 stays the same) :
03-01-2018 - 39 - 8 - 9 - 12
03-01-2018 - 40 - 4 - 14 - 15
И так каждый день у нас есть активные программы с их интенсивностью, их временем начала и окончания.
(я указал время в часах, но высм. идею).
Конечно, это будет применяться:
- На количество дней, указанное в параметрах
- И будет обновляться, когда новое событие показываетс тем же кодом программы
Я думаю создать хранимую процедуру с временной таблицей для этого, но я не знаю, как это сделать
Примечание: Параметр числа дней работает следующим образом:
1 = Sunday
2 = Monday
3 = Tuesday
...
7 = Saturday
8 = All week
9 = Weekend
Код:
CREATE TABLE events
( `program_code` int(11) NOT NULL,
`program_datetime` datetime NOT NULL,
`days` varchar(40) DEFAULT NULL,
`intensity` varchar(40) DEFAULT NULL,
`start` varchar(40) DEFAULT NULL,
`end` varchar(40) DEFAULT NULL);
INSERT INTO events (`program_code`, `program_datetime`, `days`, `intensity`, `start`, `end`)
VALUES
(40, '2018-03-05 13:24:31','8', '1', '75600', '82800'),
(39, '2018-03-05 13:24:15','8', '2', '57600', '75600'),
(40, '2018-03-02 04:34:51','9', '2', '75600', '82800'),
(39, '2018-03-02 04:34:17','1', '3', '57600', '75600'),
(37, '2018-02-18 14:31:25', '2', '2', '25200', '39600'),
(39, '2018-01-23 13:02:00','7', '4', '64800', '75600');
DB FIDDLE