Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 12/09/2007, 16h39   #1
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Par défaut [SQL] Je n'arrive pas a effacer les doublons

Bonsoir le forum,

J'ai un petit soucis que je vous expose ci-dessous.

J'ai une table contenant le champ mail, et au fur et a mesure du temps plusieurs lignes contiennent la meme adresse, je voudrais nettoyer cett base en effaçant les doublons mais en gardant quand meme un exemplaire original de chaque adresse mail en doublon.

J'ai rajouté une clé et j'ai essayé les methodes doublons relatives et absolues, mais rien toujours rien.
J'ai essayé la methode brutale en créant une table et en faisant un copie d'adresse de table a table en passant par :
$nbre_rangs=mysql_num_rows($res);
if ($nbre_rangs == 0)
etc..

Mais il y a 40000 mails et mon hebergeur me dit qu'il y a trop de connections a partir de mon script php.

Pouvez vous m'aider s'il vous plait?

Merci de votre gentillesse

P.S la versin de SQL de mon hebergeur est : MySQL 3.23.49-log
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 17h08   #2
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Bonjour, tu pourrais faire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$q = "SELECT DISTINCT email FROM table1";
$r = mysql_query($q);
$nb =mysql_num_rows($r);
 
if($nb != 0){
$i = 0;
while($i < $nb){
 
  $email[$i] = mysql_result($r, $i, "email");
 
  mysql_query("INSERT INTO table2 (email) VALUES ('$email[$i]') ");
 
  $i++; }
}
Bon c'est peut être pas la manière la plus élégante mais ça devrait fonctionner
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 17h39   #3
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
En fait je pense que cela fonctionne correctement.

J'ai demandé le tri de 36000 mails et je n'ai reçu que 23000 de l'autre coté, donc j'ai pensé comme les autres test que celui ci avait été interrompu parce que je lancé trop de requetes a la fois.

Mais en fait j'avais bien plus d'un tiers de ma base qui était au minimum multiplié par deux.

Donc je pense que le resultat est logique.

Donc merci à toi.
kaolivier 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 05h18.


 
 
 
 
Partenaires

Hébergement Web