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