SQL - Eliminar registros en varias tablas

 
Vista:

Eliminar registros en varias tablas

Publicado por Salva (5 intervenciones) el 27/09/2010 16:52:31
Hola, la consulta es la siguiente:
Tengo una BD en MySql con 22 tablas
Tengo registros duplicados en una de ellas llamada "general" con mas de 3000 registros.
Quisiera eliminar de esta tabla "general" los registros que existen en las demas tablas.
¿alquien puede ayudarme a dar con la solución?
Un saludo y gracias por la ayuda.
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Eliminar registros en varias tablas

Publicado por Leonardo Josué (1173 intervenciones) el 27/09/2010 17:33:07
Buenos días Salva, no entendí bien qué es lo que necesitas, pues al parecer estás utilizando dos conceptos diferentes. Primero dices que tienes registros duplicados, esto quiere decir que en una tabla tienes algo como esto

Campo1|Campo2
1|1
1|1
2|1
2|2
3|1
3|2
3|3

Aquí el registro 1|1 está duplicados, pero por otro lado dices quieres eliminar los registros que existan en otras tablas, esto quiere decir que tienes algo como esto
Tabla1
Campo1|Campo2
1|1
1|2
1|2

Tabla2
Campo1|Campo2
1|1
2|1
2|2

En este caso el registro 1|1 es el que está duplicado, ¿cuál de los dos es tu caso?

Otro detalle a considerar es la estructura de tus tablas. Dices que tienes 22 tablas, ¿Todas tienen la misma estructura? ¿Hay alguna condición especial para determinar cuando un registro está duplicado?

Saludos
Leo.
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

RE:Eliminar registros en varias tablas

Publicado por Salva (5 intervenciones) el 27/09/2010 18:47:39
Hola Leo.
Gracias por contestar, voy a ver si puedo explicarme mejor.

Tengo una base de datos con 22 tablas:
Todas las tablas tienen dos campos: ID_ Y Email.
En una de las tablas que llamo "general" tengo registros en el campo Email que ya tengo en otras tablas y que quiero eliminar de la tabla "general"

EJEM.
TABLA MADRID
[email protected]
TABLA GENERAL
[email protected]

Lo que necesito es eliminar de la tabla "general" [email protected]

También tengo un código PHP para borrar registros, el problema que encuentro es que solo me busca en una de las tablas. Necesitaría el código PHP para que busque [email protected] en las 22 tablas.

No sé si me explico bien...
Gracias por tu ayuda.
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Eliminar registros en varias tablas

Publicado por Leonardo Josué (1173 intervenciones) el 27/09/2010 20:18:51
Hola de nuevo Salva, ya me quedó claro qué es lo que quieres hacer, pero no entiendo muy bien cual es el problema. Para hacer lo que quieres puedes por ejemplo ejecutar una sentencia delete por cada una de las tablas, algo como esto:

DELETE FROM general WHERE email in (SELECT email FROM tabla1);
DELETE FROM general WHERE email in (SELECT email FROM tabla2);
...
DELETE FROM general WHERE email in (SELECT email FROM tabla22);

o puedes hacerlo también con un solo delete así:

DELETE FROM general WHERE email in
(
SELECT email FROM tabla1 UNION
SELECT email FROM tabla2 UNION
----
SELECT email FROM tabla22 UNION
);

No se si esto te sirva, si no es lo que esperabas pues lo comentas en el foro para ver si te podemos ayudar.

Saludos.
Leo.
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

RE:Eliminar registros en varias tablas

Publicado por Salva (5 intervenciones) el 27/09/2010 21:15:14
Hola Leo, gracias por tu ayuda...

Este es el código PHP que tengo pero algo falla y no doy con ello.... No sé si el error está en la linea

$inss="INSERT INTO usuarios (Usuario, Email) VALUES ('$Usuario', '$Email')";
$result = mysql_query($inss) or die('Consulta fallida: ' . mysql_error());

Si se te ocurre algo, me comentas. Gracias

<?php //Datos de conexión a la base
$usuario = $_POST["Usuario"];
$pass = $_POST["Email"];
$descripcion = $_POST["descripcion"];

$link= mysql_connect("localhost", "MIUSUARIO","********");
mysql_select_db("MIBASEDEDATOS",$link);

$inss="INSERT INTO usuarios (Usuario, Email) VALUES ('$Usuario', '$Email')";
$result = mysql_query($inss) or die('Consulta fallida: ' . mysql_error());

//inicio de codigo para borrar de la base de datos

$Email= $_POST['Email']; //recoges la variable que te mando el codigo anterior
$link = mysql_connect("localhost", "MIUSUARIO", "********") or die (mysql_error());
mysql_select_db("MIBASEDEDATOS",$link) or die (mysql_error());
$sql = "DELETE FROM usuarios WHERE Email=\"$Email\"";
$sql = "DELETE FROM agenda WHERE Email=\"$Email\"";
$sql = "DELETE FROM andalucia WHERE Email=\"$Email\"";
$sql = "DELETE FROM aragon WHERE Email=\"$Email\"";
$sql = "DELETE FROM asturias WHERE Email=\"$Email\"";
$sql = "DELETE FROM baleares WHERE Email=\"$Email\"";
$sql = "DELETE FROM canarias WHERE Email=\"$Email\"";
$sql = "DELETE FROM cantabria WHERE Email=\"$Email\"";
$sql = "DELETE FROM castilla_la_mancha WHERE Email=\"$Email\"";
$sql = "DELETE FROM castilla_leon WHERE Email=\"$Email\"";
$sql = "DELETE FROM catalunya WHERE Email=\"$Email\"";
$sql = "DELETE FROM exterior WHERE Email=\"$Email\"";
$sql = "DELETE FROM euskadi WHERE Email=\"$Email\"";
$sql = "DELETE FROM extremadura WHERE Email=\"$Email\"";
$sql = "DELETE FROM galicia WHERE Email=\"$Email\"";
$sql = "DELETE FROM general WHERE Email=\"$Email\"";
$sql = "DELETE FROM la_rioja WHERE Email=\"$Email\"";
$sql = "DELETE FROM madrid WHERE Email=\"$Email\"";
$sql = "DELETE FROM murcia WHERE Email=\"$Email\"";
$sql = "DELETE FROM navarra WHERE Email=\"$Email\"";
$sql = "DELETE FROM prensa WHERE Email=\"$Email\"";
$sql = "DELETE FROM valencia WHERE Email=\"$Email\"";
$realizado = mysql_query($sql);
if ($realizado)
?>
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Eliminar registros en varias tablas

Publicado por Leonardo Josué (1173 intervenciones) el 27/09/2010 21:38:35
Hola de nuevo Salva, mira, sinceramente no he trabajado con PHP, por lo que no creo poder ayudarte además este foro es sobre SQL, y existe un foro diseñado especialmente para PHP:

http://www.lawebdelprogramador.com/news/new.php?id=71&texto=PHP

igual sería conveniente que publiques tu post ahí. Lo único que a simple vista observo es que según yo estás tratando de generar un código SQL al vuelo y después ejecutarlo cierto? el problema es que según yo la variable $sql siempre se está sobreescribiendo, por lo tanto sólo ejecutaría la última instrucción. Como te comento nunca he utilizado PHP pero en otros lenguajes lo que haces generalmente es esto

sql = "Hola "
sql = sql + " Mundo"

o algo así
sql = "Hola"
sql += "Mundo"

para que el resultado final sea "Hola Mundo" completo.
si lo pones así;

sql = "Hola "
sql = " Mundo"

El resultado sería solamente "Mundo", pero como te repito, no estoy familiarizado con PHP, igual y estoy en un error. Finalmente otra recomendación, en tu post mencionas que tu código falla, pero cuál es el fallo ¿El código no compila? ¿Marca algún error? y si es así ¿Qué error marca? ¿los resultados de la ejecución no son los esperados? entre más detalles publiques será más fácil tratar de ayudarte.

Saludos
Leo.
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

RE:Eliminar registros en varias tablas

Publicado por Salva (5 intervenciones) el 28/09/2010 12:23:00
Gracias Leo, con la ayuda vuestra voy sacando el trabajo... gracias de veras.
Un saludo.
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
sin imagen de perfil

RE:Eliminar registros en varias tablas

Publicado por victor velasquez (1 intervención) el 02/09/2011 17:45:24
hola. una pregunta, a ver si me pueden ayudar.. como elimnar un registro de una tabla.. siempre y cuando no exista ese registro en la otra tabla. no hayo como. slaudos
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

RE:Eliminar registros en varias tablas

Publicado por juan (1 intervención) el 13/11/2015 00:01:32
Para futuras creaciones de bd... cuando crees las tablas y crees las relaciones entre ellas has que el fk sea en cascada para el update y el delete.. Con esto haces que cuando borres el id de la tabla padre se hará automáticamente en todas las hijos y nietos y asi en toda la jerarquia
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