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 doublons


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut Suppression de doublons
    Bonjour,
    En m'inspirant de la très intéressante page : http://sqlpro.developpez.com/cours/doublons/ (section Suppression des doublons relatifs), j'ai écrit la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete from contractddrate ddr1
    where ddr1.ddrateid < ANY (select ddr2.ddrateid from contractddrate ddr2 where ddr1.ddrateid != ddr2.ddrateid and ddr1.typeid=ddr2.typeid and ddr1.contractid=ddr2.contractid and ddr1.rate=ddr2.rate)
    (La table contractddrate contient les champs ddrateid, typeid, contractid et rate et les doublons se basent sur les champs typeid, contractid et rate)

    Or, celle-ci me renvoit le code erreur 1064 avec le traditionnel message :
    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 'ddr1
    where ddr1.ddrateid < ANY (select ddr2.ddrateid from contractddrate ddr2 w' at line 1
    Est-ce que quelqu'un pourrait m'expliquer pourquoi et du coup, comment faire pour supprimer les fameux doublons ?
    Merci par avance.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    peut être peux tu t'inspirer de ce sujet : http://www.developpez.net/forums/d69...rs-developpez/ et notamment de la solution proposée par Antoun

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    Effectivement la discussion (et la solution proposée) sont très proches de mon cas...
    Mais la solution, adaptée à ma requête, fait planter MySql.
    Voici la requête que j'expérimente, avant de faire le delete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT * FROM contractddrate ddr1
    WHERE ddr1.ddrateid < ANY (SELECT ddr2.ddrateid 
    FROM (SELECT * FROM contractddrate) ddr2
    WHERE ddr1.ddrateid != ddr2.ddrateid 
    AND ddr1.typeid=ddr2.typeid 
    AND ddr1.contractid=ddr2.contractid 
    AND ddr1.rate=ddr2.rate)
    (désolée pour l'affichage, je ne sais pas comment faire pour aligner correctement...)
    Cette requête s'exécute mais "mouline" et je suis obligée d'arrêter le service MySql manuellement. Pareil si je tente le DELETE...
    Est-ce que tu sais pourquoi ?
    Merci pour ton aide.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut
    Après tests (arrêt du service pendant l'exécution de la requête), je m'aperçois que la requête prend 73 secondes pour retourner 71 lignes, au lieu de 2 sec. pour retourner 183 lignes dans la requête sans la table virtuelle.
    Alors faut-il attendre tout simplement ? Ce temps de traitement est-il normal (ma table compte 68475 lignes) ?
    Merci encore.

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