29 de septiembre de 2014

Buscar registros repetidos

¿Quien no tuvo la tarea de buscar registros repetidos en una tabla de Visual FoxPro?...

Una forma de saber si tenemos registros repetidos en nuestras tablas es utilizar una sentencia SELECT con las cláusulas GROUP BY y HAVING como la siguiente:

OPEN DATABASE (HOME(2) + "Northwind\Northwind")
SELECT TerritoryDescription, ;
  COUNT(*) AS Repetido  ;
  FROM Territories ;
  GROUP BY TerritoryDescription ;
  HAVING Repetido > 1

El resultado de esta consulta nos muestra si existen registros repetidos y la cantidad de veces que se repiten.

Pero hay veces que necesitamos saber exactamente que registros están repetidos, para ello podemos utilizar algunas de las siguientes sentencias SELECT:

1)
OPEN DATABASE (HOME(2) + "Northwind\Northwind")
SELECT * ;
  FROM Territories ;
  WHERE TerritoryDescription IN ;
  (SELECT TerritoryDescription ;
  FROM Territories ;
  GROUP BY TerritoryDescription ;
  HAVING COUNT(*) > 1)

2)
OPEN DATABASE (HOME(2) + "Northwind\Northwind")
SELECT * ;
  FROM Territories T1;
  WHERE EXISTS ;
  (SELECT * ;
  FROM Territories T2 ;
  WHERE T1.TerritoryDescription = T2.TerritoryDescription ;
  GROUP BY T2.TerritoryDescription ;
  HAVING COUNT(*) > 1)

Nota: Las pruebas estan realizadas con la tabla "Territories" de la base de datos "Northwind" que viene en los ejemplos de VFP8 y superior.

Luis María Guayán

2 comentarios :

  1. Sale error en codigo al ponerlo en un formulario, tengo una tabla donde guardo el codigo y serie de un artefacto, quiero validar que no permita registrar codigo de producto con la misma serie. Me podrian ayudar a detectar ello

    ResponderEliminar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.