Evitar duplicados

Quisiera saber si alguien ha utilizado dev tools kits para evitar los duplicados, o alguna otra herramienta o modulo, si no es así, entonces que viable es hacerlo directamente en la base de datos, es un tema muy importante, seria de gran ayuda si alguien ha trabajado con eso, gracias

E intentado lo mismo que tu, pero no consigo que dev tools kits funcione, buscando en Internet me tope con este post, el problema es que no consigo realizar la consulta de la base de datos, porque al implementar el código con ajax SUITE CRM me muestra un error de seguridad.

Una posible forma de hacer una búsqueda de duplicados de manera lo más performante utilizando consulta a la base de datos es la siguiente:


SELECT id, name, COUNT(*) 
FROM accounts 
WHERE deleted = 0 AND name <> '' 
GROUP BY name 
HAVING COUNT(*) > 1 
LIMIT 10

El ejemplo busca cuentas repetidas por nombre. Explico las partes de la query:

  • SELECT: Obtenemos el id de sólo UNO de los elementos que está duplicado. Utilizando name podríamos encontrar al resto de los elementos repetidos. Recordemos que la cantidad de repetidos puede ser 2 o más!
  • FROM: En este caso sólo necesitamos utilizar la tabla accounts. En caso de utilizar campos custom también deberíamos incluir accounts_cstm. En caso de verificar emails también deberíamos incluir las tablas de emails. En caso de verificar por un elemento relacionado deberíamos hacer JOIN con la tabla relacionada. En los dos últimos casos hay que tener MUCHO cuidado de no hacer join con más o menos de UN registro. Recomiendo utilizar LEFT JOIN para la mayor parte de los joins.
  • WHERE: Siempre hay que verificar por deleted = 0, ya que no queremos buscar entre los elementos borrados. También es conveniente no trabajar sobre datos vacíos, ya que dos elementos con un dato vacío no siempre implican duplicidad.
  • GROUP BY: Agrupa todas las cuentas que tengan el mismo nombre
  • HAVING: Filtra sólo aquellas cuentas que se repitan más de una vez el mismo nombre.
  • LIMIT: Es muy importante limitar (10, 50, 100, o la cantidad que prefieran), ya que una consulta sin límite puede producir grandes problemas de performance en la base de datos.

Una vez encontrados los ids de los elementos duplicados se puede utilizar la herramienta de Combinar (Merge) del CRM para eliminar la duplicidad.

1 Like