IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Suppression des doublons d'un champs SQL


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    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...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Salut,

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

    Si qlq peut m'aider a la faire tourner.

    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Je crois que tu doit remplacer les apostrophes '' par des guillemets """
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("delete from newsletter2 where id='$id_doublon'");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vous ne demandez pas les champs id et email dans votre requête ...

    Proposition (requiert une version de MySQL >= à 4.1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

Discussions similaires

  1. suppression des doublons dans un SQL récursif
    Par dr_nilkog dans le forum DB2
    Réponses: 10
    Dernier message: 10/10/2011, 09h24
  2. Réponses: 3
    Dernier message: 26/07/2009, 10h06
  3. SQL ->-> Recupérer des données d'un champ en C++
    Par bogizo dans le forum C++Builder
    Réponses: 8
    Dernier message: 16/05/2007, 13h48
  4. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 08h02
  5. [SQL SERVER]des doublons rebelles
    Par trotters213 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/03/2005, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo