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

Requêtes MySQL Discussion :

suppression de doublon


Sujet :

Requêtes MySQL

  1. #1
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut suppression de doublon
    bonjour j'ai une table dans laquelle j'ai des doublons.
    j'ai trouvé une méthode que j'adapte à ma base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE FROM `inter`
    LEFT OUTER JOIN (
            SELECT MIN(id) as `id`, `Nom`, `Prenom`, `prix`
            FROM `inter`
            GROUP BY `Nom`, `Prenom`,`prix`
        ) as t1 
        ON table.id = t1.id
    WHERE t1.id IS NULL
    mais quand je l'exécute dans php myadmin, j'ai cette erreur
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT OUTER JOIN (
    SELECT MIN(id) as `id`, `Nom`, `Prenom`, `prix`
    une idée sur l'erreur de syntaxe?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Fonctionnellement, que cherchez vous à supprimer ? tous le triplets [nom; prénom; prix] pour lesquels il existe un identifiant plus petit ?
    Auquel cas vous pouvez faire comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE FROM INTER MAIN
    WHERE EXISTS
         (SELECT 1 FROM INTER SUBQ
          WHERE SUBQ.NOM    = MAIN.NOM
            AND SUBQ.PRENOM = MAIN.PRENOM
            AND SUBQ.PRIX   = MAIN.PRIX
            AND SUBQ.ID     < MAIN.ID)
    Cette syntaxe vous économise un groupage, et ne transporte aucune donnée, d'où exécution plus rapide, surtout s'il y a du volume

  3. #3
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    si je copie colle le code dans phpmyadmin j'ai également une erreur de syntaxe à côte de MAIN
    WHERE EXISTS

    à quoi correspondent les instructions main et subq?

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par rvm31 Voir le message
    à quoi correspondent les instructions main et subq?

    Il ne s'agit pas d'instruction mais d'alias de table.
    Il se peut que MySQL exige le mot clef AS et que votre erreur soit due à cela,

    essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELETE FROM INTER AS MAIN
    WHERE EXISTS
         (SELECT 1 FROM INTER AS SUBQ
          WHERE SUBQ.NOM    = MAIN.NOM
            AND SUBQ.PRENOM = MAIN.PRENOM
            AND SUBQ.PRIX   = MAIN.PRIX
            AND SUBQ.ID     < MAIN.ID)

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut à tous.

    Citation Envoyé par rvm31
    j'ai une table dans laquelle j'ai des doublons.
    Je suppose que vos doublons sont le triplé (Nom, Prenom, prix). Est-ce bien cela ?

    Citation Envoyé par rvm31
    j'ai trouvé une méthode que j'adapte à ma base
    Ça, c'est la méthode bourrin ! En MySql, vous pouvez supprimer tous vos doublons en créant un index comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alter ignore table `inter` add unique index `doublon` (`Nom`, `Prenom`, `prix`);
     
    alter table `inter` drop index `doublon`;
    Citation Envoyé par rvm31
    mais quand je l'exécute dans php myadmin, j'ai cette erreur
    Je n'ai pas testé votre requête, mais il me semble que vous indiquez :
    Ne serait-il pas plus judicieux de mettre 'inter' plutôt que 'table' ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    Ok merci artemus 24 ça fonctionne impec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression de doublons et insertion
    Par Samish dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/08/2005, 21h57
  2. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. Requête de suppression de doublons : besoin d'aide
    Par biocorp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2004, 17h04
  5. [LG]Suppression de doublons
    Par moustique31 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2003, 21h03

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