Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

borrar todos los registros que no sean iguales a ninguno dentro de otra tabla

Estas en el tema de borrar todos los registros que no sean iguales a ninguno dentro de otra tabla en el foro de Mysql en Foros del Web. Hola al foro, tengo el siguiente problema, quiero borrar todos los registros de una tabla que no sean iguales a ninguno dentro de otra tabla. ...
  #1 (permalink)  
Antiguo 03/10/2006, 15:50
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
borrar todos los registros que no sean iguales a ninguno dentro de otra tabla

Hola al foro, tengo el siguiente problema, quiero borrar todos los registros de una tabla que no sean iguales a ninguno dentro de otra tabla. Lo he intentado de la siguiente forma pero es imposible, funciona bastante mal:

mysql_select_db($database_conect, $conect);
$query_Recordset2 = "SELECT * FROM interesados_dat";
$Recordset2 = mysql_query($query_Recordset2, $conect) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);

mysql_select_db($database_conect, $conect);
$query_Recordset1 = "SELECT * FROM interesados WHERE idinters != '".$row_Recordset2['idinter']."'";
$Recordset1 = mysql_query($query_Recordset1, $conect) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

//$result=mysql_query("select * from TU_TABLA");
while($row_Recordset1=mysql_fetch_assoc($Recordset 1)){
if($row_Recordset1["idinters"]!=$row_Recordset2['idinter']){
mysql_query("delete from interesados where idinters='$row[idinters]'");
}
}

alguna sugerencia?

gracias.
  #2 (permalink)  
Antiguo 03/10/2006, 17:19
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta He intentado otra cosa pero me borra todo!!

Sigue haciendo lo que quiere, supuestamente esto me tendria que borrar todos los registros que no sean iguales a ninguno de los registros de la otra tabla pero ni caso!!

Código PHP:
<?php
mysql_select_db
($database_conect$conect);
$query_Recordset1 "SELECT * FROM interesados, interesados_dat WHERE interesados.idinters != interesados_dat.id";
$Recordset1 mysql_query($query_Recordset1$conect) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);

mysql_query("delete from interesados where idinters ='".$row_Recordset1['idinters']."'");

?>
una ayuda??? please.......

gracias.
  #3 (permalink)  
Antiguo 05/10/2006, 13:40
 
Fecha de Ingreso: octubre-2006
Mensajes: 23
Antigüedad: 17 años, 6 meses
Puntos: 1
Porque no probas relacionando las tablas primero con inner join, eso te va a dar una tabla directa del los archivos que queres borrar

Suerte
Enermedia
  #4 (permalink)  
Antiguo 05/10/2006, 15:21
 
Fecha de Ingreso: septiembre-2006
Mensajes: 29
Antigüedad: 17 años, 7 meses
Puntos: 0
Un query distinto

haz probado hacer un query asi?
delete FROM interesados WHERE interesados.idinters NOT IN (select interesados_dat.id from interesados_dat)
  #5 (permalink)  
Antiguo 05/10/2006, 15:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por MarcoAntoine Ver Mensaje
haz probado hacer un query asi?
delete FROM interesados WHERE interesados.idinters NOT IN (select interesados_dat.id from interesados_dat)
Buena opción ... pero habría que preguntar al interesado que versión de Mysql usa .. porqué las subconsultas no están disponibles desde todas las versiones de Msyql.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 06/10/2006, 05:00
 
Fecha de Ingreso: octubre-2006
Mensajes: 30
Antigüedad: 17 años, 7 meses
Puntos: 0
Prueba esto

SELECT [Tabla].[campo], [Tabla].[Relacion]
FROM Tabla LEFT JOIN Tabla2 ON [Tabla].[campo] = [Tabla2].[campo]
WHERE ([Tabla2].[campo] Is Null);

Bueno, esto es un select, comprueba que los datos son correctos y cambia el select por delete *
  #7 (permalink)  
Antiguo 09/10/2006, 11:48
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
De acuerdo gracias por las respuestas!!

Hola, respondiendo a Cluster la version mysql que utilizo es la 1.3 bastante añeja y no soporta las subconsultas. Pero he utilizado otra solución que es marcar los registros que si sirven, asi a la hora de insertar un registro actualizo y marco.
Código PHP:
$insertSQL sprintf("INSERT INTO interesados_dat (id, nombres, telefono, movil, fecha, zona1,zona2, zona3, desdep, hastap, medio, comentarios, idinter) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_GET['id'], "int"),
                       
GetSQLValueString($_GET['nombres'], "text"),
                       
GetSQLValueString($_GET['telefono'], "text"),
                       
GetSQLValueString($_GET['movil'], "text"),
                       
GetSQLValueString($_GET['fecha'], "text"),
                       
GetSQLValueString($_GET['zona1'], "text"),
                       
GetSQLValueString($_GET['zona2'], "text"),
                       
GetSQLValueString($_GET['zona3'], "text"),
                       
GetSQLValueString($_GET['desdep'], "double"),
                       
GetSQLValueString($_GET['hastap'], "double"),
                       
GetSQLValueString($_GET['medio'], "text"),
                       
GetSQLValueString($_GET['comentarios'], "text"),
                       
GetSQLValueString($_GET['idinter'], "int"));

  
mysql_select_db($database_conect$conect);
  
$Result1 mysql_query($insertSQL$conect) or die(mysql_error());
}
mysql_select_db($database_conect$conect);
$b=1;
mysql_query("update interesados set atach = '$b' WHERE idinters='".$_GET['idinter']."'");
?> 
Luego a la hora de borrar, borro los registros que no estan marcados y listo. igual gracias por la ayuda.
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 23:08.