retapage accueil, gestion de Demandes

This commit is contained in:
Tykayn 2025-07-16 17:00:09 +02:00 committed by tykayn
parent d777221d0d
commit f4c5e048ff
26 changed files with 2498 additions and 292 deletions

60
clean_duplicate_stats.sql Normal file
View file

@ -0,0 +1,60 @@
-- Script SQL pour désactiver temporairement la contrainte d'unicité sur l'INSEE de ville,
-- supprimer les doublons, et réactiver la contrainte
-- ATTENTION: Ce script supprime des enregistrements de la table stats.
-- Les entités liées (CityFollowUp, Place) seront également supprimées si des contraintes
-- de clé étrangère avec ON DELETE CASCADE sont définies dans la base de données.
-- Assurez-vous de faire une sauvegarde de la base de données avant d'exécuter ce script.
-- 1. Désactiver temporairement la contrainte d'unicité
ALTER TABLE stats DROP CONSTRAINT uniq_stats_zone;
-- 2. Identifier et supprimer les doublons, en gardant l'entrée la plus ancienne
-- Créer une table temporaire pour stocker les IDs à supprimer
CREATE TEMP TABLE stats_to_delete AS
WITH duplicates AS (
SELECT
id,
zone,
date_created,
ROW_NUMBER() OVER (
PARTITION BY zone
ORDER BY
-- Garder l'entrée la plus ancienne si date_created existe
CASE WHEN date_created IS NOT NULL THEN 0 ELSE 1 END,
date_created,
-- Si date_created est NULL, utiliser l'ID le plus petit (probablement le plus ancien)
id
) AS row_num
FROM stats
WHERE zone IS NOT NULL
)
SELECT id FROM duplicates WHERE row_num > 1;
-- Afficher le nombre de doublons qui seront supprimés
SELECT COUNT(*) AS "Nombre de doublons à supprimer" FROM stats_to_delete;
-- Afficher les détails des doublons qui seront supprimés (pour vérification)
SELECT s.id, s.zone, s.name, s.date_created
FROM stats s
JOIN stats_to_delete std ON s.id = std.id
ORDER BY s.zone, s.id;
-- 3. Supprimer les doublons
-- Note: Nous utilisons DELETE ... USING pour éviter les problèmes de contraintes de clé étrangère
DELETE FROM stats
USING stats_to_delete
WHERE stats.id = stats_to_delete.id;
-- 4. Nettoyer la table temporaire
DROP TABLE stats_to_delete;
-- 5. Réactiver la contrainte d'unicité
ALTER TABLE stats ADD CONSTRAINT uniq_stats_zone UNIQUE (zone);
-- 6. Vérifier qu'il n'y a plus de doublons
SELECT zone, COUNT(*)
FROM stats
WHERE zone IS NOT NULL
GROUP BY zone
HAVING COUNT(*) > 1;