Asunto: Eliminación de registros masiva con filtro y varias tablas
Quisiera saber qué consulta SQL tengo que ejecutar en MySQL para eliminar varios registros de una tabla que cumplan una determinada condición (hasta aquí no hay problema) y que, además haya varias tablas implicadas, por ejemplo para un inner join.
Tengo las siguientes tablas:
* criteriosspam - tabla de la que hay que eliminar los registros.
* aplicacionreglaalm - tabla relacionada con la anterior por el campo "idregla", la que quiero utilizar para el inner join.
y quiero hacer un enlace con el campo "id" de la tabla criteriosspam y el campo "idregla" de la tabla aplicacionreglaalm".
y filtrar por una fecha inferior a la introducida por el usuario, el campo de la fecha es de la tabla "aplicacionreglaalm", se llama "fechaultima".
Publicado:
Mie Oct 25, 2006 12:22 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Eliminación de registros masiva con filtro y varias tabl
Anuncios
Dependerá de la versión de MySQL que utilices, si utilizas una versión igual o superior a la 4.1 puedes utilizar esta consulta SQL:
Código:
DELETE FROM c USING criteriosspam AS c, aplicacionreglaalm AS a WHERE c.id = a.idregla AND a.fechaultima < :fechaIntroducidaUsuario
Si utilizas Delphi, te muestro un ejemplo de cómo sería utilizando un TQuery:
Código:
procedure ...
var
hastaFecha : string;
hastaFechaF : TDateTime;
begin
...
hastaFecha := InputBox('Fecha', 'Introduzca la fecha:', datetostr(now));
hastaFechaF := strtodate(hastaFecha);
tc.Close;
tc.SQL.Clear;
tc.SQL.Add('delete from c using criteriosspam as c, aplicacionreglaalm as a ');
tc.SQL.Add(' where c.id = a.idregla and a.fechaultima < :pFecha');
tc.ParamByName('pFecha').DataType := ftDateTime;
tc.ParamByName('pFecha').AsDateTime := hastaFechaF;
tc.ExecSQL;
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A