Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/10/2011, 14h26   #1
Membre du Club
 
Inscription : juillet 2011
Messages : 202
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 202
Points : 65
Points : 65
Par défaut Supprimer des doublons dans une table

Bonjour ,


J'ai un petit problème et je ne sais pas comment procéder.

Quand je fais un

Code :
SELECT idUtilisateur FROM RDV_Participants
il y a plusieurs lignes dont le idUtilisateur est le même , je souhaiterais en laisser qu'un seul !

Comment je pourrais procéder pour faire ça ?
Merci d'avance pour votre aide, vos conseils !
arngrimur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 14h38   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
bonjour,

Lisez ceci : http://sqlpro.developpez.com/cours/doublons/
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 25/10/2011, 15h12   #3
Membre du Club
 
Inscription : juillet 2011
Messages : 202
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 202
Points : 65
Points : 65
Merci pour le lien
Toutefois avec Utilisation d'une fonction de ranking et ceci:

Code :
1
2
3
4
5
DELETE 
FROM RDV_Participants rdv
WHERE rdv.COLUID>ANY
(SELECT COLUID FROM RDV_Participants rdv2
WHERE rdv.COLUID<>rdv2.COLUID)
J'ai cette erreur:

Msg*102, Niveau*15, État*1, Ligne*2
Syntaxe incorrecte vers 'rdv'.

Tu saurais me dire pourquoi ?
arngrimur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 15h19   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
votre SGBD c'est SQL serveur ?

Sinon en remplacant le delete par un select est-ce que la requete marche ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 15h23   #5
Membre du Club
 
Inscription : juillet 2011
Messages : 202
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 202
Points : 65
Points : 65
Oui je suis sur SQL serveur :

En faisant un select * ça marche

J'ai le même résultat qu'en faisant un SELECT IdUtilisateur from RDV_Participants en fait( j'ai pas encore très bien pigé la requete DELETE que j'ai essayé de faire )
arngrimur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 09h10   #6
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
Citation:
Envoyé par arngrimur Voir le message
Merci pour le lien
Toutefois avec Utilisation d'une fonction de ranking et ceci:

Code :
1
2
3
4
5
DELETE 
FROM RDV_Participants rdv
WHERE rdv.COLUID>ANY
(SELECT COLUID FROM RDV_Participants rdv2
WHERE rdv.COLUID<>rdv2.COLUID)

A quoi correspond COLUID en fait ?
Si ca n'est pas une colonne d'origine de votre table comment l'avez-vous alimentée ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 09h12   #7
Membre du Club
 
Inscription : juillet 2011
Messages : 202
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 202
Points : 65
Points : 65
j'ai fait ceci :

Code :
1
2
3
4
5
6
ALTER TABLE RDV_participants
      ADD COLUID uniqueidentifier
 
 
UPDATE RDV_participants
SET    COLUID = newid()

merci
arngrimur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 09h17   #8
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
Oki,

Donc là si votre requête avait marchée vous auriez supprimé tous les enregistrement de votre table sauf un.

Vous avez oublié de spécifier votre clause d'égalité pour repérer les doublons.

Sinon je ne connais pas plus que ca SQL serveur donc concernant la syntaxe je ne saurai vous en dire plus, mais l'idée est là.

Demandez à déplacer votre sujet dans le forum SQL Serveur ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 11h51   #9
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
je vais te proposer deux solutions:
la premiere est comme suite:
1/Ajouter un champs intitulé par exemple double
2/Marquer tous les doublants mettant à jour le champs double à l'aide de..
Code :
1
2
3
4
5
6
UPDATE RDV_Participants A SET A.double='OUI'
WHERE A.idUtilisateur  IN
(SELECT  B.idUtilisateur  
FROM RDV_Participants B
GROUP BY B.idUtilisateur 
HAVING count(B.idUtilisateur )>1)
3/Inserer des nouvelles lignes qui sont en doubles mettant le champ double à NULL.
à suivre dans la piece jointe....car je n'ai pas pu publier la totalité du message
Fichiers attachés
Type de fichier : doc solutions.doc (29,0 Ko, 3 affichages)
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/10/2011, 13h59   #10
Membre du Club
 
Inscription : juillet 2011
Messages : 202
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 202
Points : 65
Points : 65
Merci beaucoup pour ton aide!
arngrimur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h20.


 
 
 
 
Partenaires

Hébergement Web