Im имея дб с этими таблицами:Попытка написать хранимую процедуру с временем начала и окончания
drop table if exists events1;
create table if not exists events1(
time_stamp decimal(16,6),
message char(90) not null default 'defult message'
);
drop table if exists events2;
create table if not exists events2(
time_stamp decimal(16,6),
message char(90) not null default 'defult message'
);
drop table if exists events3;
create table if not exists events3(
time_stamp decimal(16,6),
message char(90) not null default 'defult message'
);
insert into events1 (time_stamp,message) values (1485193300,"a1");
insert into events1 (time_stamp,message) values (1485193600,"b1");
insert into events1 (time_stamp,message) values (1485193900,"c1");
insert into events2 (time_stamp,message) values (1485193300,"a1");
insert into events2 (time_stamp,message) values (1485193600,"b2");
insert into events2 (time_stamp,message) values (1485193900,"c3");
insert into events3 (time_stamp,message) values (1485193300,"a1");
insert into events3 (time_stamp,message) values (1485193600,"b2");
insert into events3 (time_stamp,message) values (1485193900,"c3");
Я пытаюсь построить хранимую процедуру, с 3-мя параметрами:
start_time (int) (in epoch)
end_time (int) (in epoch)
interval (int) (in epoch)
Я не буду этого делать, перейдя за start_time, с шагом интервал до конца_time и на каждой итерации, чтобы получить объединение трех таблиц в соответствии с шагом и интервалом.
что-то вроде:
DELIMITER //
CREATE PROCEDURE get_events
(IN start_time INT,
IN end_time INT,
IN interval INT,
)
BEGIN
while [ start_time <= end_time]
do
next_time = start_time + interval
select *
from events1
where start_time <= time_stamp and time_stamp <= next_time
union
select *
from events2
where start_time <= time_stamp and time_stamp <= next_time
union
select *
from events3
where start_time <= time_stamp and time_stamp <= next_time
start_time = start_time + interval
end while
END //
DELIMITER ;
я знаю, что есть синтаксические ошибки, я не знаю, как я могу вернуть результаты и перебрать объединения 3 таблицы с заданными интервалами в случае, когда ,
сообщите пожалуйста.
Что вы имеете в виду под «возвращать результаты»? 'UNION' вернет набор результатов для каждой итерации' WHILE'. –