Foros del Web » Programando para Internet » PHP »

Borrar registros idénticos en 2 tablas

Estas en el tema de Borrar registros idénticos en 2 tablas en el foro de PHP en Foros del Web. Hola, tengo 2 tablas y estoy tratando de borrar los registros de una tabla que ya están en otra tabla insertados. Os pongo cómo lo ...
  #1 (permalink)  
Antiguo 18/01/2009, 01:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 180
Antigüedad: 15 años, 6 meses
Puntos: 1
Borrar registros idénticos en 2 tablas

Hola, tengo 2 tablas y estoy tratando de borrar los registros de una tabla que ya están en otra tabla insertados.
Os pongo cómo lo estoy intentando:

Código PHP:
<?php
$conexion
=mysql_connect("localhost","***","***"
  or  die(
"Problemas en la conexion");
mysql_select_db("***",$conexion
  or  die(
"Problemas en la selección de la base de datos");

$registros=mysql_query("SELECT mail_usuario FROM mi_db",$conexion) or
  die(
"Problemas en el select:".mysql_error());

if (
$registros>0) { 
$mail mysql_result($registros,0,'mail_usuario'); 

$query_borrar "DELETE FROM otratabla WHERE Email='$mail'"
mysql_query($query_borrar) or die(mysql_error());
echo 
"Registros repetidos borrados!!";
}else{
echo 
"No hay registros loco";
}
?>
Con eso no me los borra, o bueno, creo que me borró 1 registro pero tengo como 50 o así repetidos.
Dónde fallo?

Última edición por Xematick; 18/01/2009 a las 02:35
  #2 (permalink)  
Antiguo 18/01/2009, 04:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 180
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Borrar registros idénticos en 2 tablas

La estructura de mis tablas seria:

Tabla mi_db:
-Campo 1: mail_usuario

Tabla otratabla:
-Campo 1: Email

Me gustaría poder borrar de la tabla `otratabla` los registros en los que su campo Email coincida con el campo mail_usuario de la tabla `mi_db`
Es esto muy complicado, ya he probado varias cosas y buscado pero no se como resolverlo.
Gracias
  #3 (permalink)  
Antiguo 18/01/2009, 06:19
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 2
Busqueda Respuesta: Borrar registros idénticos en 2 tablas

Buenas,

Por lo que entiendo queres borrar los registros de la tabla otratabla si es que coinciden los email con el de la tabla mi_db.

Osea seria:
1- hacer un select de todos los emails de la tabla mi_db
2- hacer un ciclo y comparar y borrar los registros, si son iguales los emails.

Prueba asi;


<?php
$conexion=mysql_connect("localhost","***","***")
or die("Problemas en la conexion");
mysql_select_db("***",$conexion)
or die("Problemas en la selección de la base de datos");

$registros=mysql_query("SELECT mail_usuario FROM mi_db",$conexion) or
die("Problemas en el select:".mysql_error());


if (mysql_num_rows($registros) == 0) {
echo "No se han encontrado filas, nada a imprimir, asi que voy " .
"a detenerme.";
exit;
}

// Mientras exista una fila de datos, colocar esa fila en $fila
// como una matriz asociativa
//Aqui recorremos tos los mail_usuario que existen en mi_db
while ($fila = mysql_fetch_assoc($registros)) {
$mail = $fila["mail_usuario"];
//aqui se borra los registros de otratabla donde los emails son iguales
$query_borrar = "DELETE FROM otratabla WHERE Email='$mail'";
mysql_query($query_borrar) or die(mysql_error());
}
?>

Espero que te sirva.
  #4 (permalink)  
Antiguo 18/01/2009, 06:49
Avatar de pilsenero  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo-Uruguay
Mensajes: 42
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: Borrar registros idénticos en 2 tablas

no hay que complicarla con un delete alcanza
delete otra_tabla from otra_tabla, mi_db where otra_tabla.email=mi_db.mail_usuario

con esta sentencia borras todos los registros de otra_tabla que coincidan con los de mi_db.

Saludos
__________________
www.casasyautomoviles.com
clasificados de casas, autos y motos
  #5 (permalink)  
Antiguo 18/01/2009, 07:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 180
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Borrar registros idénticos en 2 tablas

Eso estubo genial. Desconocia el uso de mysql_fetch_assoc . Con eso seleccionas en bucle todas las consultas en vez de una sola o como es eso?
  #6 (permalink)  
Antiguo 18/01/2009, 07:17
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Borrar registros idénticos en 2 tablas

mysql_fetch_assoc

Devuelve una matriz asociativa que corresponde a la fila recuperada y mueve el apuntador de datos interno hacia adelante.


Esto para lo que sirve en este ejemplo es para recorrer y recuperar cada mail_usuario de la tabla mi_db y luego con esto haces la query para eliminar registros en tu otratabla.
( Esta la opcion de pilsenero que es mas )


Te paso el link de la descripcion de la funcion
mysql_fetch_assoc : http://php.grn.es/manual/es/function.mysql-fetch-assoc.php

saludos.
  #7 (permalink)  
Antiguo 18/01/2009, 08:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 180
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Borrar registros idénticos en 2 tablas

Muchas gracias por la información.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:21.