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 20/05/2007, 18h36   #1
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Par défaut [SQL] Suppression des doublons d'un champs SQL

Bonjour,

J'ai trouver une petite fonction sur le net pour supprimer des doublons d'un champs dans SQL !

La voici

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$req_doublon=mysql_query("select count(email) as num from newsletter2 group by email HAVING num>1") or die(mysql_error());
 
while ($res_doublon=mysql_fetch_array($req_doublon)) {
 
                //suppression du doublon
 
                $id_doublon=$res_doublon['id'];
                $email_doublon=$res_doublon['email'];
                mysql_query("delete from newsletter2 where id='$id_doublon'");
 
                echo '<p>le mail '.$email_doublon.' a &eacute;t&eacute; supprimm&eacute;</p>';
 
                continue;
 
 }

Mais il ne supprime pas les doublons .... et je ne comprend pas pourquoi, si qlq peut me donner un coups de main !

Merci
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2007, 18h55   #2
Membre expérimenté
 
Étudiant
Inscription : juillet 2004
Messages : 777
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 777
Points : 527
Points : 527
Hum pour supprimer les doublon d'une table je ferais pas comme ca.
Je créerai une table temporaire, dans laquel je met le contenu de ma table mais avec un SELECT DISTINCT qui evite les doublons, je vide la premiere table, et je recopie le contenu de la table temporaire dans ma premiere table, et je supprime la table temporaire...
cerede2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2007, 19h58   #3
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Salut,

Effectivement je connais DISCTINT mais je voudrais plutot faire tourner cette fonction !

Si qlq peut m'aider a la faire tourner.

Merci
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 12h35   #4
Membre confirmé
 
othmane bentalha
Inscription : mai 2006
Messages : 257
Détails du profil
Informations personnelles :
Nom : othmane bentalha
Âge : 25

Informations forums :
Inscription : mai 2006
Messages : 257
Points : 228
Points : 228
Je crois que tu doit remplacer les apostrophes '' par des guillemets """
Code :
mysql_query("delete from newsletter2 where id='$id_doublon'");
Code :
mysql_query("delete from newsletter2 where id=\"$id_doublon\"");
Par ce que je crois qu'il l'a considère comme une chaine de caractère
othmane126 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 14h28   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous ne demandez pas les champs id et email dans votre requête ...

Proposition (requiert une version de MySQL >= à 4.1):
Code :
1
2
3
4
5
6
7
$query = mysql_query("SELECT SUBSTRING_INDEX(GROUP_CONCAT(id
SEPARATOR ","), ',', -1) FROM newsletter2 GROUP BY email HAVING COUNT(email) >1") or die(mysql_error());
$id2del = array();
while ($array = mysql_fetch_row($query)) {
   array_push($id2del, $array[0]);
}
mysql_query('DELETE FROM newsletter2 WHERE id IN(' . implode(',', $id2del) . ')') or die(mysql_error());
(partiellement testé )

Mais vous devriez revoir vos contraintes pour ne pas avoir besoin de le faire !
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h00.


 
 
 
 
Partenaires

Hébergement Web