Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 09/05/2008, 12h05   #1
Invité régulier
 
Inscription : juillet 2005
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 18
Points : 6
Points : 6
Par défaut Enregistrements en double

Bonjour

Suite à une cause indeterminée (je ferai ça dans une autre discussion), mon programme a doublé des enregistrements.

Comment pourrais par sql supprimer les doubles parfaits d'une table?

Merci pour votre aide
fafi1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 13h08   #2
Invité régulier
 
Inscription : mai 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 37
Points : 9
Points : 9
la table sans les doublons (je suppose que si tu as des doublons que tu n as pas de clé primaire ou de contrainite UNIQUE)
Code :
1
2
3
4
5
6
 
 
CREATE TABLE sans_doublons AS
SELECT max(champ1),max(champ2),...,max(champN)
FROM table_avec_doublons
GROUP BY champ1,champ2,...champN
jlinho2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 13h20   #3
Membre régulier
 
Développeur .NET
Inscription : juin 2007
Messages : 77
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : juin 2007
Messages : 77
Points : 88
Points : 88
salut,

J'utiliserais plutôt le mot clé DISTINCT qui est justement la pour éviter les doublons dans le résultat de la requète.

et pour eviter de supprimer ta table et de la recréer je dirais :

1. création d'une table temporaire à partir des enregistrements de ta table (avec requete distinct)

2. tu vides la table qui contient les doublons

3. tu repeuples ta table à partir de la table temporaire

4. tu supprimes la table temporaire
robri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 14h04   #4
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Suffit de lire la FAQ sur ce site (http://oracle.developpez.com/faq/?page=3-1#doublons) ou de faire une recherche, ce problème a déjà été posé de nombreuses fois
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2008, 14h11   #5
Invité régulier
 
Inscription : juillet 2005
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 18
Points : 6
Points : 6
Merci: les deux solutions marchent
fafi1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 12h03   #6
Invité régulier
 
Inscription : mai 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 37
Points : 9
Points : 9
Citation:
Envoyé par robri Voir le message
salut,

J'utiliserais plutôt le mot clé DISTINCT qui est justement la pour éviter les doublons dans le résultat de la requète.

et pour eviter de supprimer ta table et de la recréer je dirais :

1. création d'une table temporaire à partir des enregistrements de ta table (avec requete distinct)

2. tu vides la table qui contient les doublons

3. tu repeuples ta table à partir de la table temporaire

4. tu supprimes la table temporaire
Effectivement DISTINCT est bien mieux.
Je fais tellement de GROUP BY en ce moment que je n'ai pas pensé à un simple DISTINCT. désolé.
jlinho2 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 16h02.


 
 
 
 
Partenaires

Hébergement Web