Se connecter / S'enregistrer

Résolu Supprimer doublons base mysql php

Solutions (22)
Tags :
  • Php
  • MySQL
  • Programmation
|
Bonjour,

Je suis à la recherche de la bonne requete (mysql/php) afin de supprmmer tous les doublons de ma base. Je veux faire ma comparason sur deux champs. Bien sur je voudrais supprimer q'un des deux doublons.

j'ai fait pas mal de recherche sur le net mais je n'arrive pas à touver la bonne requete.

Merci d'avance.

Julio.
Contenus similaires
Meilleure solution
partage
, Modérateur |
Fais voir un bout de tes données, mais c'est bizarre que ça ne fonctionne pas...

Et PhpMyAdmin c'est pas la version de MySQL:

Tu devrais avoir la version de MySQL en haut à droite dans le cadre "MySQL", "Server version:"


Edit: tu as reposté entre temps...
Euh, ouais là il va falloir donner tes données.
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par julio42.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
pour éviter cela , tu peut aussi utilisée les base innodb !
  • Commenter cette réponse |
Score
0
òh
òi
|
ca y'ai j'ai trouvé en fait j'ai modifie dans mysql dans la structure de la table le "Interclassement" du champ title et extra_fields_search4. ils etaient à "utf8_general_ci" et j'ai modifié et selectionné dans la liste "latin1_swedish_ci"

Merci encore pour ton aide, je suis content d'avoir trouvé. je m'auto félicite!!!

Merci encore.
A plus.
  • Commenter cette réponse |
Score
0
òh
òi
|
remplace ma réponse précédente

quand je fais
while ($row5= mysql_fetch_row($query5))
{

print "$row5[13] - $row5[1] - $row5[3]<br>";


}
cela m'affiche

AIX EN PROVENCE - Odyssée Bleue - 65
AIX EN PROVENCE - Odyssee Bleue - 65
AIX EN PROVENCE - Yep-rent - 65
ALBERTVILLE - Privilège - 65
ALBERTVILLE - Privilège - 65
ALBERTVILLE - PRIVILEGE - 65
ALFORTVILLE - Zerrouki Hassan - 65

donc ensuite on s'apercois que des champs sont égaux et alors je fais un :
$query="ALTER IGNORE TABLE jos_k2_items ADD UNIQUE INDEX(title,catid,extra_fields_search4)";

cela m'affiche
AIX EN PROVENCE - Odyssée Bleue - 65
AIX EN PROVENCE - Odyssee Bleue - 65
AIX EN PROVENCE - Yep-rent - 65
ALBERTVILLE - Privilège - 65
ALBERTVILLE - Privilège - 65
ALBERTVILLE - PRIVILEGE - 65


pour la version de mysql c'est 5.0.27
  • Commenter cette réponse |
Score
0
òh
òi
|
j'ai l'impression qu'elle fait la suppression qu'en fonction du 1er paramèrte, c'est à dire title
car quand je fais :
ALTER IGNORE TABLE jos_k2_items ADD UNIQUE INDEX(title, idcat); il me reste 246 enregistrements (alors que le champ idcat varie)
et quand je fais
ALTER IGNORE TABLE jos_k2_items ADD UNIQUE INDEX(title); il me reste 246 enregistrements

Merci d'avance.


  • Commenter cette réponse |
Score
0
òh
òi
|
phpmyadmin 2.9.1.1
  • Commenter cette réponse |
Score
0
òh
òi
|
j'ai essayé en prenant le champ extra_fields_search4 qui est un varchar(255) et pareil cela ne marche pas.
J'ai essaye en mettant un seul paramètre extra_fields_search4 et là ca marche quand je met ensuite (title, extra_fields_search4) ca ne marche plus mais si je met (title,idcat) ca marche. a rien n'y comprendre
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
C'est possible que les champs de type TEXT ne puissent pas faire partie d'une contrainte d'unité.
Quelle version de MySQL utilises-tu ?
  • Commenter cette réponse |
Score
0
òh
òi
|
est ce que cela ne vient du fait que :
title est une champ varchar(255)
idcat est un champ int (11)

et que extra_fields_search2 est une champ text
  • Commenter cette réponse |
Score
0
òh
òi
|
Excuse déjà c'est pas extra_fields_2 mais extra_fields_search2.
Ensuite ce dernier continet des ifos comme :
PARIS 75016
PIERRE BENITE 69310
....

donc je ne comprend pas pourquoi ca ne marche pas
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Il me semble me souvenir de tes précédentes questions que le champ extra_fields_2 est un champ qui contient plein de données un peu n'importe comment.
Tu es bien sûr que les valeurs de extra_fields_2 sont exactement identiques, au caractère près ?
Pour qu'il supprime les doublons, il faut que title, idcat et extra_fields_2 soient tous les 3 exactement identiques.
  • Commenter cette réponse |
Score
0
òh
òi
|
cette requête enleve bien les doublons :
ALTER IGNORE TABLE jos_k2_items ADD UNIQUE INDEX(title, idcat);

Cette requete n'enleve rien du tout alors qu'il y a des doublons
ALTER IGNORE TABLE jos_k2_items ADD UNIQUE INDEX(title, idcat, extra_fields_2);

Je ne sais pas pourquoi cette dernière ne supprime pas les doublons

  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Elle te donne une erreur ? Je ne vois pas pourquoi elle ne fonctionnerait pas sur 3 colonnes, il n'y a pas de limites de colonnes.
  • Commenter cette réponse |
Score
0
òh
òi
|
merci bien pour ta requete elle marche bien sur une base en essai mais je l'ai essayé en mettant sur 3 colonnes et elle ne marche pas.
Comment faire?
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Elle ajoute une contrainte d'unicité sur les colonnes 1 et 2. Du coup, il ne pourra plus y avoir de doublons sur les colonnes 1 et 2, et ça supprime les doublons existants.
  • Commenter cette réponse |
Score
0
òh
òi
|
je ne pourrais essayer que ce soir donc je vous dirai ma réponse que ce soir.
En francais cette requete fais quoi exacteement?
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Exécute cette commande MySQL:
  1. ALTER IGNORE TABLE nomTable ADD UNIQUE INDEX(nomColonne1, nomColonne2);
  • Commenter cette réponse |
Score
0
òh
òi
|
je pensais à une requete sql imbriquée?
  • Commenter cette réponse |
Score
0
òh
òi
|
Utilise les "if ( mysql... == mysql... ) { mysql... }"
  • Commenter cette réponse |
Score
0
òh
òi
|
merci bien petittigre mais c'est pas ca que je souhaite. Je souhaite supprimer des doublons dans ma base. ils n'ont pas la même clé primaire mais le meme titre et meme ville donc je souhaite supprimer un des deux enregistrement.
  • Commenter cette réponse |
Score
0
òh
òi
|
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS