jourdanne85
Messages postés27Date d'inscriptiondimanche 14 décembre 2008StatutMembreDernière intervention20 octobre 2009
-
15 oct. 2009 à 16:35
jourdanne85
Messages postés27Date d'inscriptiondimanche 14 décembre 2008StatutMembreDernière intervention20 octobre 2009
-
20 oct. 2009 à 15:18
Bonjour à tous,
Voilà mon problème.
Je dois récupérer une table DM_CONSULTATION_PLAINTE (SQL Server Express).
Cette table représente en fait les plaintes enregistrées par un ostéo lors des consultations.
Voici les principaux champs : NoConsultation, Description, CodePlainte, Rang.
Pour l'instant, il n'y a pas de clé primaire et je tiens à en rajouter une.
Le problème est qu'il y a des doublons avec le même NoConsultation et le même Rang.
Le rang sert en fait à différencier les différentes plaintes d'une même consultation.
Je veux donc rajouter un champ clé primaire à cette table afin que chaque ligne soient identifiée. Cette clé doit donc avoir un numéro incrémenté de 1 pour chaque ligne de la table.
Je ne vois pas comment je peux faire.
Si quelqu'un a une solution !
Merci d'avance
jourdanne85
Messages postés27Date d'inscriptiondimanche 14 décembre 2008StatutMembreDernière intervention20 octobre 2009 20 oct. 2009 à 15:18
Après quelques recherches j'ai enfin trouvé la solution :
Mon problème était le suivant :
Je devais rajouter un Id à une table qui comportait des doublons.
Tout d'abord, j'ai utilisé un curseur qui va généré un nombre pour chaque ligne.
Pour ceci, j'ai rajouté un champ "Essai" à ma table.
DECLARE @i INT
DECLARE @Essai INT
SET @i = 1
DECLARE CURSEUR_DOUBLON_Dysfonction CURSOR
FOR
SELECT Essai
FROM DM_CONSULTATION_DYSFONCTION
FOR UPDATE
OPEN CURSEUR_DOUBLON_Dysfonction
FETCH CURSEUR_DOUBLON_Dysfonction INTO @Essai
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE DM_CONSULTATION_DYSFONCTION
SET Essai = @i
WHERE CURRENT OF CURSEUR_DOUBLON_Dysfonction
SET @i = @i + 1
FETCH CURSEUR_DOUBLON_Dysfonction INTO @Essai
END
CLOSE CURSEUR_DOUBLON_Dysfonction
DEALLOCATE CURSEUR_DOUBLON_Dysfonction
Ensuite, il faut maintenant supprimer les doublons.
DELETE
FROM DM_CONSULTATION_DYSFONCTION
WHERE DM_CONSULTATION_DYSFONCTION.Essai < ANY (SELECT Essai
FROM DM_CONSULTATION_DYSFONCTION D2
WHERE DM_CONSULTATION_DYSFONCTION.Essai <> D2.Essai
AND DM_CONSULTATION_DYSFONCTION.Rang = D2.Rang
AND DM_CONSULTATION_DYSFONCTION.NoConsultation = D2.NoConsultation
AND DM_CONSULTATION_DYSFONCTION.CodeDysfonction = D2.CodeDysfonction)
Nous avons maintenant une table avec un ID pour chaque ligne et sans aucoun doublon.