MADNS-2927 - Getting issue details... STATUS


Comment Auditer les listes: avons nous des problèmes ?


Identifier les différentes liste qui ont des doublons

SELECT DISTINCT listeDiffusionid
FROM listregistration 
GROUP BY listeDiffusionid, personneId 
HAVING COUNT(*) > 1
ORDER BY listeDiffusionid ASC;



Corriger les doublons en les effaçants ( on corrige le premier id)

DELETE FROM listregistration WHERE id NOT IN ( SELECT MIN(id) FROM listregistration GROUP BY listeDiffusionid, personneId );


Identification du problème


Requete pour vérifier un doublon

SELECT * FROM votre_table WHERE listeDiffusion = 7806 AND personneId = 17113467;



Cela semble un probleme d'import: a la miliseconde pres



Le nombre de doublons pour cette liste 

Liste des doublons

SELECT personneId, COUNT(*) 
FROM listregistration 
WHERE listeDiffusionid = 7806 
GROUP BY personneId 
HAVING COUNT(*) > 1;

→ 58 doublons


Supprimer les doublons de la liste 7806


DELETE FROM listregistration WHERE listeDiffusionid = 7806 AND id NOT IN ( SELECT MIN(id) FROM listregistration WHERE listeDiffusionid = 7806 GROUP BY personneId );

Cela marche parfaitement


Supprimer les doublons de la liste



Segment 


La contrainte suivante pose probleme


SELECT rc.constraint_name, kcu.column_name AS foreign_key_column, ccu.table_name AS referenced_table, ccu.column_name AS referenced_column, rc.update_rule, rc.delete_rule FROM information_schema.referential_constraints rc JOIN information_schema.key_column_usage kcu ON rc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage ccu ON rc.constraint_name = ccu.constraint_name WHERE rc.constraint_name = 'segmentlistregistration_listregistration_fk';



Creer la contrainte segmentlistregistration_listregistration_fk


 

Ajout de CASCADE sur la suppression




ALTER TABLE segmentlistregistration
ADD CONSTRAINT segmentlistregistration_listregistration_fk
FOREIGN KEY (listregistrationid) -- Remplacez par le nom réel de la colonne
REFERENCES listregistration(id) -- Remplacez par les noms réels
ON DELETE CASCADE
ON UPDATE NO ACTION; -- Ou utilisez la règle que vous avez identifiée


Action de suppression de TOUS les doublons


DELETE FROM listregistration 
WHERE id NOT IN (
    SELECT MIN(id)
    FROM listregistration
    GROUP BY listeDiffusionid, personneId
);


  • No labels
Write a comment...