Duplicidad en campo

¿Soy novato y me gustaría que me dirían un tip? Trabajo en visual frox pro 7.0 y quisiera saber como identificar en una columna una duplicidad ya sea por medio de un comando sql o rutina de un campo nombre en 200000 registros ejemplo 'jhon', 'john', 'jhonn', muchas gracias
Respuesta
1
Esa estuvo buena..
Según yo no veo ninguna duplicidad.. los tres campos son diferentes.
"jhon", "john" y "jhonn" son totalmente diferentes, ni yo ni tu potente VFP 7 te vamos a poder dar la solucion real al problema.
Ahi te va una posible solucion que yo llegue a hacer, pero que no te da el 100% de fiabilidad ya que es bastante manual.
1.- Genera una Tabla llamada "Correccion" ordenando y agrupando por nombre (así te quedaran jntos los errores, pero eliminas las duplicidades ) (solo tendrás un john, un jhon, etc. y tus 20,000 registros se limitaran bastante)
2.- Crea un campo alterno llamado nombre_correcto,
3.- El campo nombre_correcto lo rellenas con el nombre correcto "john" (aquí es donde puedes tardarte varias horas o días. (Esta es la parte donde tu te puedes equivocar.. Pero vale la pena)
4.- Relaciona tu tabla original con la tabla "Correccion" por medio de campo el nombre.
Set relation to nombre into correccion
5.- Reemplaza los valores con el valor corregido
Replace Nombre with Correccion.nombre_corregido all
6.- Repite esto por cada campo que creas necesario corregir. (Apellidos (materno y parteno usas el mismo catalogo))
Quizás No es la mejor solución, pero es la que yo he utilizado y me sirvió bastante, lo realice alguna vez sobre un catalogo de clientes de más de 100,000 registros. (si.. si me tarde)
Al final obtienes un diccionario de errores posibles que puedes volver a utilizarlo si es necesario. (Yo el mio lo borre, eso fue hace como 5 años). Otra ganancia de hacerlo así.. es que puedes hacerlo sobre una base de datos de pruebas, y cuando terminas lo ejecutas sobre la base de datos en producción y no habrá perdida de tiempo para el usuario.
Saludos y espero te sirva la idea.
Si muchas gracias por tu aclaración lo que pasa es que no me hice entender, tengo 200.000 registros y una persona que se llama:
apel1, 'velez',    apel2,   'campo',   nom1, 'jhon'.
apel1, 'veles',    apel2,   'campo',   nom1, 'john'.
apel1, 'belez',    apel2,   'campo',   nom1, 'jhonn'.
Si las cruzo por los tres campos no da ninguna coincidencia, lo que quería expresar es como hacerlo con un comando que busque o identifique por caracteres en nom1='jhon'
como por ejemplo con el comando SELECT * from bdua WHERE nom1 like '%J%N'
O una rutina que logre identificarlos en desorden las letras aleatoriamente si se puede
gracias y disculpa si no me hice entender
A ver, según yo si había entendido, pero ya estoy dudando.. barajeamela más despacio.
Tienes 200,000 registros.
Tienes una persona que se llama apel1, 'velez', apel2, 'campo', nom1, 'jhon'.
Otra persona que se llama apel1, 'veles', apel2, 'campo', nom1, 'john'.
Y otra persona que se llama apel1, 'belez', apel2, 'campo', nom1, 'jhonn'.
Tu pregunta es la siguiente
a) En total tienes 3 registros de personas diferentes. Pero "tu supones" que es la misma persona. ¿Cómo elimino o corrijo los registros mal capturados?
b) En total tienes 3 registros de personas diferentes. Pero "tu supones" que es la misma persona. ¿Cómo busco los registros mal capturados para continuar utilizándolos?
Dime si tu pregunta es a) o b) o ninguna de las dos. Je je.
Exactamente, la pregunta es la a.
Pero solamente necesito que me los identifique para hacer el arreglo o eliminarlo
Entonces no estaba tan perdido.. es así como te decía..
1.- Genera una Tabla llamada "Correccion" ordenando y agrupando por nombre (así te quedaran jntos los errores, pero eliminas las duplicidades ) (solo tendrás un john, un jhon, etc. y tus 20,000 registros se limitaran bastante)
2.- Crea un campo alterno llamado nombre_correcto, esta tabla sera tu "Diccionario de errores" y el campo sera la solución.
3.- El campo nombre_correcto lo rellenas con el nombre correcto "JUAN" (aquí es donde puedes tardarte varias horas o días. (Esta es la parte donde tu te puedes equivocar.. Pero vale la pena)
4.- Relaciona tu tabla original con la tabla "Correccion" por medio de campo el nombre.
Set relation to nombre into correccion
5.- Reemplaza los valores con el valor corregido
Replace Nombre with Correccion.nombre_corregido all
6.- Repite esto por cada campo que creas necesario corregir. (Apellidos (materno y parteno usas el mismo catalogo))
Lo voy a plantear de otro modo en palabras más llanas.
Como Fox no sabe que John es lo mismo que jhon, vas a hacer un diccionario de sinónimos,
y no hay otra forma más que hacerlo manualmente.
Cuando termines de hacer tu diccionario de sinónimos, reeemplazas las palabras que tengas mal por las que asignaste en el diccionario de sinónimos.
Es muy tardado.. pero no conozco otra forma.
Si muchas gracias, estaba pensando lo mismo hay que hacer un diccionario de errores pero imaginate la cantidad en apellidos y nombres pero empezare hacer la tarea si tienes un diccionario no te olvides que tienes un amigo y muchas gracias

1 respuesta más de otro experto

Respuesta
Para ello debes hacer una pequeña rutina, seria algo así
*- Clientes Duplicados
select * from from clientes order by nombre into cursor x
sele x
go top
xNombre = x.nombre
skip
do while !eof()
      if alltr(xNombre)==alltr(xNombre)
           ? XNombre
       Endif
      xNombre = X.Nombre
      Se le x
      Skip
Enddo
Esta función imprimirá los nombres duplicados.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas