FoxPro/Visual FoxPro - Eliminar registros que no coinciden entre 2 tablas

 
Vista:

Eliminar registros que no coinciden entre 2 tablas

Publicado por Percy  (8 intervenciones) el 19/11/2009 22:42:52
Hola, por favor, necesito de su ayuda, necesito eliminar de la tabla 2 los valores que no coincidan con la tabla 1, usando y relacionado para ello los campos (valor_a, valor_b) asi:
Tabla_1 Tabla_2
VALOR_A VALOR_B
20 10
30 40
40 40
50 70
60 100
70 110
80 120
La idea es eliminar de la tabla 2 los registros que no coincidan con la tabla 1.
La idea es más o menos así:

Delete from tabla_2 where valor_b not in (select valor_a from table_1)
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

RE:Eliminar registros que no coinciden entre 2 tab

Publicado por hancito (54 intervenciones) el 20/11/2009 02:21:15
La informacion que suministras es muy poca. Si observas el 70 se repite en ambas tablas aunque no en la misma posicion.

Es necesario saber si lo que quieres es eliminar las entradas que no esten exactamente ubicadas en el mismo registro sin importar el numero de registro en que esten . Para el segundo caso, lo ideal seria indexar la tabla a y utilizar la tabla b para moverte de registro en registro hasta llegar al final. Seria algo asi:

select 1
use tabla a
index on valor a to indicea
set order to indicea

select 2
use tabla b
go top

do while .not. eof()
valor=valorb

select 1
go top
seek valor
if found()
skip
else
select 2
delete
endif
select 2
skip
loop
endif

Es obvio que el DELETE te eliminara el registro completo, por lo que te decia que no habias suministrado la informacion completa. Si lo que quieres es eliminar en contenido del campo, entonces remplace el delete:

replace valor b with 0

espero te sirva
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