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
);
Add Comment