[REGLE] dédoublonner une table
9 messages
• Page 1 sur 1
-

e-kiwi - Modérateur

- Messages: 15617
- Inscription: 23 Déc 2003
[REGLE] dédoublonner une table
Bonjour,
j'ai une table d'association d'articles à des entreprises (id_art et id_ent) sauf que j'ai des doublons. comment je fais EN SQL la requete magique qui va me supprimer tous les doublons de ma table ?
merci !
j'ai une table d'association d'articles à des entreprises (id_art et id_ent) sauf que j'ai des doublons. comment je fais EN SQL la requete magique qui va me supprimer tous les doublons de ma table ?
merci !
Dernière édition par e-kiwi le Jeu Mai 11, 2006 10:58, édité 1 fois.
- spidetra
- WRInaute passionné

- Messages: 1500
- Inscription: 7 Juil 2003
1. Tu fais d'abord un SELECT pour identifier tes doublons. Un truc du style ( à adapter ) :
2. Si la sélection te semble correcte, tu remplace l'instruction SELECT, par une instruction DELETE. Je m'abstiendrai d'écrire le DELETE
Evidemment avant, tu as fait une petite sauvegarde de ta table...
EDIT : Le passage du SELECT au DELETE est pas aussi direct que ça. Si tu fait un DELETE de la sélection tu vas effacer tout les enregistrements qui sont en double, et c'est pas ce que tu veux faire.
- Code: Tout sélectionner
SELECT id_art, id_ent, count(*)
FROM latable
GROUP BY id_art, id_ent
HAVING count(*) > 1
2. Si la sélection te semble correcte, tu remplace l'instruction SELECT, par une instruction DELETE. Je m'abstiendrai d'écrire le DELETE
Evidemment avant, tu as fait une petite sauvegarde de ta table...
EDIT : Le passage du SELECT au DELETE est pas aussi direct que ça. Si tu fait un DELETE de la sélection tu vas effacer tout les enregistrements qui sont en double, et c'est pas ce que tu veux faire.
Dernière édition par spidetra le Jeu Mai 11, 2006 10:17, édité 1 fois.
- spidetra
- WRInaute passionné

- Messages: 1500
- Inscription: 7 Juil 2003
Une solution assez simple consiste a passer par une table temporaire :
suppression des doublons dans la table. A MANIPULER APRES SAUVEGARDE
recopie de la table temporaire dans ta table
suppression de la table temporaire
- Code: Tout sélectionner
SELECT DISTINCT id_art, id_ent
INTO table_temp
FROM latable
GROUP BY id_art, id_ent
HAVING COUNT(*) > 1
suppression des doublons dans la table. A MANIPULER APRES SAUVEGARDE
- Code: Tout sélectionner
DELETE
FROM latable t1
WHERE EXISTS (SELECT *
FROM latable t2
WHERE t1.id_art = t2.id_art
AND t1.id_ent = t2.id_ent
GROUP BY id_art, id_ent
HAVING COUNT(*) > 1)
recopie de la table temporaire dans ta table
- Code: Tout sélectionner
INSERT INTO latable
SELECT id_art, id_ent
FROM table_temp
suppression de la table temporaire
- Code: Tout sélectionner
DROP TABLE table_temp
- spidetra
- WRInaute passionné

- Messages: 1500
- Inscription: 7 Juil 2003
Il y a quand même un petit truc que je ne comprends pas :
- table Article : PK : id_art
- table Entreprise : PK : id_ent
La clé primaire de ta table d'association devrait être une clé composite ( id_art, id_ent ).
Tu ne devrais pas avoir de doublons sur ces 2 colonnes.
C'est quoi la clé primaire de ta table d'association ?
Si tu ne peux pas transformer (id_art, id_ent) en clé primaire, tu devrais au moins mettre un INDEX UNIQUE sur ces 2 colonnes pour éviter les doublons dans le futur.
- table Article : PK : id_art
- table Entreprise : PK : id_ent
La clé primaire de ta table d'association devrait être une clé composite ( id_art, id_ent ).
Tu ne devrais pas avoir de doublons sur ces 2 colonnes.
C'est quoi la clé primaire de ta table d'association ?
Si tu ne peux pas transformer (id_art, id_ent) en clé primaire, tu devrais au moins mettre un INDEX UNIQUE sur ces 2 colonnes pour éviter les doublons dans le futur.
-

e-kiwi - Modérateur

- Messages: 15617
- Inscription: 23 Déc 2003
d'apres toi pourquoi je cherches à virer les doublons ?
pour reparer l'erreur de précédent webmaster en transformant ces clés en index+clés primaires. et chose faite, je passe de 4mn à 2 sec ma requete, je suis content
ps : comme tu l'a rectifié, ta requete supprimai les doublons, mais les 2 enregistrements
je l'ai donc fait en php. problème réglé
ps : comme tu l'a rectifié, ta requete supprimai les doublons, mais les 2 enregistrements
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Dédoublonner une table MySql par id
- regle ip table
- [Réglé] Categorizator : Table sites_annuaire effacée
- [Réglé] Faire un listing en pages d'une table.
- [réglé]Sortir tout les nom commancant par a d'une table
- [réglé] comment faire un "OPTIMIZE table" dans un
- dedoublonner en temps réel
- [sql] Tri d'une table selon un champ dans une autre table
- Comment dédoublonner une liste d'emails ?
- PHP MySql copy table à table [RESOLU]
- Les pays gérés par la Google Toolbar 2.0 - 26-06-2003
- Yahoo Slurp et autres robots d'indexation de Yahoo - 07-03-2004
- Services et outils de Yahoo! Search - 17-02-2004
- Parts de marché des moteurs aux USA (Octobre 2006) - 04-12-2006
- Les visiteurs de WRI apprécient Firefox - 24-03-2005
- Agent Web Ranking v.2.6.2 s'ouvre à l'Asie - 09-05-2005
- Liste de sites à PageRank 10 (PR 10) - 07-09-2008
- Baromètre moteurs de recherche Décembre 2004 - 26-01-2005
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


