MySQL - Evento Mysql / insert SELECT

   
Vista:

Evento Mysql / insert SELECT

Publicado por Mario (2 intervenciones) el 02/10/2013 09:35:31
Muy Buenas a todos!

Os comento mi problema.

Me gustaría crear un evento diario que utilizaria para hacer un "insert into summarized_table () SELECT [...]". El evento se ejecutaría todos los dias a las 10:00am.

- Esta es la tabla sumarizada donde insertaria los datos agrupados:

create table attemptsub_carrierday_sum (
id int(11) not null AUTO_INCREMENT,
time date not null,
country int(11) not null,
id_carrier int(11) not null,
attempts int(11) not null,
optins int(11) not null,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


- Y este es el insert que utilizaría para el evento:

INSERT INTO attemptsub_carrierday_sum (time, country, id_carrier, attempts, optins) select DATE(att.created_at) as time , co.id as country , ca.id_carrier , count(att.id) as attempts,
sum(case when att.api_code = 100 AND att.api_wasactive = 1 AND api_sending_short_code > 0 then 1 else 0 end) as optins
from attemptsub as att
LEFT JOIN carrier as ca ON att.id_carrier= ca.id_carrier
LEFT JOIN country as co ON ca.country_id = co.id
where created_at between curdate() - interval 2 day and curdate() - interval 1 day
GROUP BY country, id_carrier, DATE(att.created_at)
ORDER BY time desc, country, id_carrier


My problema es que nunca he hecho un evento en MySQL ( he hecho realizado algun job en oracle pero mysql es diferente!) y apreciaria mucho mucho vuestra ayuda.

Si necesitais mas información estare encantado de ayudar.

Muchas gracias de antemano

Mario
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Willian

Evento Mysql / insert SELECT

Publicado por Willian (51 intervenciones) el 02/10/2013 22:20:51
Hola Mario proba con esto

delimiter $$
drop event if exists nombre_de_mi_evento$$
CREATE EVENT nombre_de_mi_evento
ON SCHEDULE
EVERY 1 day STARTS '2013-09-18 22:30:00' + interval 1 day do
begin

/*aca va tu insert o cualquer otro codigo necesario*/

end $$


donde el start = a la primera fecha y hora en que dara el start.
interval 1 day es a cada cuanto tiempo se ejecutara en este ejemplo cada 1 dia o sea todos los dias a partir de la fecha 201-09-18 a las 22:30 horas del server.. podes dar intervalos de años, meses,semanas,dias, horas, minutos, segundos ,etc. de acuerdo a lo que necesitas

Atencion en el my.cnf (linux) o my.ini (windows) debes habilitar el evento con esta linea

event-scheduler = ON

luego reiniciar el servicio para que tome en cuenta la modificacion
saludos espero que hayas entendido no soy muy bueno en enseñar ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar