Como establecer entre dos tablas Coincidentes y No

Me gustaría conocer el código en Visual FoxPro para establecer entre dos tablas registros coincidentes y no coincidentes y marcar los registros repetidos en una tabla.

1 respuesta

Respuesta
1
bueno para saber los registros coincidentes entre dos tablas prueba esto
tabla1 y tabla2
select * form tabla1, tabla2 where tabla1.referencia =  tabla2.referencia into cursor tbcoincidentes
lo anterior es si deseas obtener los campos de la tabla1 y 2.. si quieres algunos campos especificos, nombras la tbla y el campo de la tabla que quieres... referencia es el punto de comparacion...
para los no coincidente solo pregunstas si son diferente, ose...
 tabla1.referencia != tabla2.referencia y listo
Para marcar los registros repetidos en una tabla... imagino te refieres a marcar para eliminar..
primero listas los registros sin que se repitan...
select distinct * from tabla1 into cursor datosdistintos
ahora
a marcar cada registro que se repita
num_regis = 1
select datosdistintos
go top
limite = reccount()
scand for num_regis <= limite
  cant = 0
  select tabla1
  go top
  n_regis1 = 0 
  scand n_resgis2 < = reccount()
    if datosdistintos.referencia = tabla1.referencia then
      cant = cant + 1
      if cant > 1 then
       aplicas la linea de elimnar...
      endif
    endif
  Endscan
Ensdcan
...
Que pena no terminarte el ejemplo... pero me surgió una urgencia,,, debo ireme...
Muy bien esto es lo que buscaba... me puedes enviar el resto del código del ejemplo... gracias.
retomando la parte de la eliminacion... que pena no responder antes.. estaba bastante ocupado
select distinct * from tabla1 into cursor datosdistintos
ahora
marcar cada registro que se repita
num_regis = 1
select datosdistintos
go top
limite = reccount()
scand for num_regis <= limite
  cant = 0
  select tabla1
  go top 
  n_regis1 = 0
  scand n_resgis2 < = reccount()
    if datosdistintos.referencia = tabla1.referencia then
      cant = cant + 1
      if cant > 1 then 
          replace tabla1.referencia with -1
          && Cambia la referencia por (-1) parea saber cuales eliminar
endif
endif
endscan
ensdcan
.....una ves definidos los registros a eliminar... se aplica
delet from mitabla1 where mitabla1.referencia = -1
select mitabla1
pack
...
Listo... para aplicar el pack debes abrir la tabla en modo exclusivo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas