Trouver et supprimer des doublons de comptes théoriques
Il y a deux façons de faire lorsque l’on veut chercher et supprimer des doublons dans SQL Server Management Studio :
1. Si l’on connait les "compte_id" du compte à garder et du doublon :
1.1 Requête pour trouver les doublons :
SELECT TOP (1000) [personne_id]
,c.compte_type_id
,count(*)
FROM [Hpliance].[dbo].[LIEN_PERSONNE_COMPTE] lpc
left outer join [Hpliance].[dbo].[COMPTE] c on c.compte_id = lpc.compte_id
left outer join [Hpliance].[dbo].[COMPTE_TYPE] ct on c.compte_type_id = ct.compte_type_id
GROUP BY [personne_id], c.compte_type_id
HAVING count(*) > 1
1.2 Requête pour voir les doublons de compte théorique :
/****** Script de la commande SelectTopNRows à partir de SSMS ******/
SELECT TOP (1000) [compte_id]
,[compte_login]
,[compte_password]
,[compte_type_id]
,[compte_config]
FROM [Hpliance].[dbo].[COMPTE]
where [compte_id] in (Numéro compte théorique 1,
Numéro compte théorique 2)
SELECT TOP (1000) [personne_id]
,[compte_id]
,[lien_personne_compte_config]
FROM [Hpliance].[dbo].[LIEN_PERSONNE_COMPTE]
where [compte_id] in (Numéro compte théorique 1,
Numéro compte théorique 2)
1.3 Requête pour supprimer le doublon :
delete [Hpliance].[dbo].[LIEN_PERSONNE_COMPTE]
where [compte_id]=Numéro compte théorique 2
delete from [Hpliance].[dbo].[COMPTE]
where [compte_id]=Numéro compte théorique 2
2. Si l’on ne connaît pas les "compte_id" ou s'il y a plusieurs doublons :
2.1 Trouver les "compte_id"
SELECT TOP (2000) [compte_id]
,[compte_login]
,[compte_password]
,[compte_type_id]
,[compte_config]
FROM [Hpliance].[dbo].[COMPTE]
Where compte_type_id = 20
2.2 Chercher le "compte_id" grâce au "compte_login"
SELECT [compte_id]
FROM [Hpliance].[dbo].[COMPTE]
where compte_login = 'UHgrouss'
and [compte_type_id] = (select [compte_type_id]
FROM [Hpliance].[dbo].[COMPTE_TYPE]
where [referentiel_id] = 13 )
2.3 Supprimer la personne avec son "compte_id"
delete [Hpliance].[dbo].[LIEN_PERSONNE_COMPTE]
where [compte_id] = 28285
delete from [Hpliance].[dbo].[COMPTE]
where [compte_id]=28285