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

Langage SQL Discussion :

[MySQL] Delete doublons ERREUR


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut [MySQL] Delete doublons ERREUR
    Bonjour, j'utilise mysql Query browser.
    Ayant une longue liste de contact(mail) j'aimerais supprimer les adresse doublons.
    J'essais donc de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE FROM copycrm.vtiger_contactdetails WHERE email in 
    (SELECT COUNT(email) 
    FROM copycrm.vtiger_contactdetails 
    GROUP BY email HAVING COUNT(email)>1)
    Et voici le message d'erreur qui m'est retourné!
    You can't specify target table 'vtiger_contactdetails' for update in FROM clause

    Je ne comprends pas, AIDEZ MOI

    MERCI

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Bonjour,

    email est un type email, une sorte de string.
    count(email) est un type d'entier.

    donc ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    email in (SELECT COUNT(email)
    ne peut marcher, car les types sont différents.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Tu ne peux pas utiliser la table que tu modifies dans la sous-requête.

    La requête suivante va donner les emails qui existent en plus d'un exemplaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT email, COUNT(*)
    FROM tatable
    GROUP BY email
    HAVING COUNT(*) > 1
    Par contre si on supprime les emails qui sont en double, on va aussi supprimer celui qui doit rester des deux !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Tout dabord merci pour vos reponses!
    Il ne sont pas de meme types, mmhhh
    Comment pourrais-je effacer seulement un exemplaire sur les deux adresse doublons?(Je suis debutant lol)?

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Il ne sont pas de même type, mmhhh
    Qu'entends-tu par là ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    D'apres Scorpi0:
    Bonjour,

    email est un type email, une sorte de string.
    count(email) est un type d'entier.

    donc ça :

    Code :

    email IN (SELECT COUNT(email)
    Je suis daccord avec lui, on ne peut pas comparer email avec count(email)!!
    Comment proceder?

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 779
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 779
    Points : 52 754
    Points
    52 754
    Billets dans le blog
    5
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Si les doublons ne sont pas nombreux et si les lignes de ces doublons n'ont pas de correspondance dans une table liée, fais-le à la main.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Merci beaucoup pour ce site, il m'a aidé!
    Cependant j'ai encore une erreur lors du delete de mes doublons relatifs!!!
    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
    DELETE
    FROM   copycrm.vtiger_contactdetails T1
    WHERE  T1.contactid <  any (SELECT contactid
                        FROM   copycrm.vtiger_contactdetails T2
                        WHERE  T1.contactid <> T2.contactid
                          AND  T1.email = T2.email
                          AND  T1.lastname = T2.lastname
                          AND  T1.firstname = T2.firstname
                          AND  T1.phone= T2.phone
                          AND  T1.mobile = T2.mobile
                          AND  T1.fax = T2.fax)
     
     
    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 'WHERE  T1.contactid <  any (SELECT contactid
                        FROM   copycrm' at line 3
    Pouvez vous m'éclairer une fois de plus?

  10. #10
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par mikathieut Voir le message
    Personne pour m'aider les copains ?

    Juste une question, tu as été jeté un oeil sur le lien donné par SQLPro ? Tout y est parfaitement expliqué....
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  11. #11
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour, j'ai un autre problème!
    J'ai résolu l'ancien problème en créant une table TEMP qui prend les valeurs de la vraie table. Ensuite je m'en sert pour le delete (car apparemment avec MySQL on ne peut pas faire les requêtes imbriqués sur la même table
    Voici ma commande de delete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM copycrm.contactdetails WHERE email NOT IN (SELECT DISTINCT email FROM copycrm.contactdetails_temp)
    Ce code ci marche, car il met environ 30 secondes a s'exécuter, mais il ne m'efface rien du tout!!!Il ne m'affiche pas d'erreur
    Pourquoi?

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

Discussions similaires

  1. [phpMyAdmin] problème DELETE doublons bdd MySQL
    Par stephane52 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 16/10/2014, 18h06
  2. Réponses: 1
    Dernier message: 02/01/2008, 13h28
  3. [MySQL] Message d'erreur pour atteindre ma base
    Par leloup84 dans le forum Installation
    Réponses: 7
    Dernier message: 04/02/2006, 01h51
  4. [VB6 + Mysql]Gestion des erreurs de connexion
    Par Deejoh dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 25/01/2006, 20h01
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19

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