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 :

Problème de requête pour la suppression de doublons relatifs [Débutant(e)]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Problème de requête pour la suppression de doublons relatifs
    Bonjour,

    J'ai lu l'excellent cours sur la suppression des doublons (http://sql.developpez.com/doublons/)

    Mais j'ai un problème lorsque je souhaite supprimer mes doublons relatifs, j'ai un message d'erreur qui me dit :
    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 T.contactid < ANY ( SELECT contactid
    Ma version de mysql est 5.0.19

    Si vous pouviez m'aider, je suis un débutant

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 105
    Points
    105
    Par défaut
    Tu peux nous donner ta requête?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je fais la requete du cours sur les doublons relatifs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELETE
    FROM   T_DOUBLON T
    WHERE  T.NUM > ANY (SELECT NUM
                        FROM   T_DOUBLON T2
                        WHERE  T.NUM <> T2.NUM
                          AND  T.NOM    = T2.NOM
                          AND  T.PRENOM = T2.PRENOM)
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je m'aperçois que l'erreur vient de la syntaxe dans le renommage de la table T_DOUBLON ..

    Que dois-je faire?

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Peut être essayer d'ajouter le mot clé AS lors du renommage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELETE
    FROM   T_DOUBLON AS T
    WHERE  T.NUM > ANY (SELECT NUM
                        FROM   T_DOUBLON AS T2
                        WHERE  T.NUM <> T2.NUM
                          AND  T.NOM    = T2.NOM
                          AND  T.PRENOM = T2.PRENOM)
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je l'avais fais aussi mais toujours le même message d'erreur

    Je comprend vraiment pas

    Est-ce que cela peut venir du fait que je réalise mes requêtes à partir de MySQL-Front?!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 105
    Points
    105
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE
    FROM   T_DOUBLON T
    WHERE  T.NUM > ANY (SELECT T2.NUM
                        FROM   T_DOUBLON T2
                        WHERE  T.NUM <> T2.NUM
                          AND  T.NOM    = T2.NOM
                          AND  T.PRENOM = T2.PRENOM)
    Est ce qu'il ne se perd pas sur le select NUM, il détecte peut être une ambiguité, lui préciser la table T2 ne résoud pas le problème?

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je viens d'essayer ta requête _Jnie_ et cela ne fonctionne toujours pas, en tout cas merci beaucoup pour votre aide et vos réponses

    En espérant résoudre mon problème

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    En regardant de plus près le message d'erreur que vous indiquez dans votre 1er post, il est impossible que vous ayez ce message pour cette requête.

    Donnez-nous la requête EXACTE (même si elle est complexe) et le message d'erreur en entier.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Pour être sûr que cela ne venait pas de ma table et ma base, j'ai crée une table identique avec les données identiques du cours sur la suppression des doublons, et j'ai entré la même requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELETE
    FROM   T_DOUBLON T
    WHERE  T.NUM < ANY (SELECT NUM
                        FROM   T_DOUBLON T2
                        WHERE  T.NUM <> T2.NUM
                          AND  T.NOM    = T2.NOM
                          AND  T.PRENOM = T2.PRENOM)
    Et j'ai cette erreur affiché par MySQL-Front :

    [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 T.NUM < ANY ( SELECT NUM FROM TDOU]

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 69
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Le sujet est de 2007 et pourtant toujours d'actualité avec MySQL5, combien de temps encore le tutoriel va rester comme ça ?

    J'ai exactement le même problème, j'ai beaucoup cherché sur la toile et je retrouve toujours le même problème, les même infos, les même lien vers la DOC et tous les sujet traitant de ce problème reste sans réponse comme celui-ci.

    Pour exemple un sujet d'ici même :

    http://www.developpez.net/forums/d61...ublons-erreur/

    La personne à finalement laissé tombé cette méthode.

  12. #12
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Si MySQL respectait le standard du langage SQL, ça se saurait.
    Le tutoriel auquel tu fais référence n'est pas spécifique à MySQL et présente des requêtes qui fonctionnent sur de nombreux SGBD.

    La requête à laquelle tu fais référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE
    FROM   T_DOUBLON T
    WHERE  T.NUM < ANY (SELECT NUM
                        FROM   T_DOUBLON T2
                        WHERE  T.NUM <> T2.NUM
                          AND  T.NOM    = T2.NOM
                          AND  T.PRENOM = T2.PRENOM)
    peut aussi s'écrire ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELETE
    FROM   T_DOUBLON T
    WHERE  T.NUM < (    SELECT MIN(T2.NUM)
                        FROM   T_DOUBLON T2
                        WHERE  T.NUM    <> T2.NUM
                          AND  T.NOM    = T2.NOM
                          AND  T.PRENOM = T2.PRENOM
                    )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 53
    Points : 43
    Points
    43
    Par défaut
    UPDATE et DELETE n'accepte pas les alias de table, il faut juste reporter le nom de table partout dans la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE
    FROM   T_DOUBLON
    WHERE  T_DOUBLON.NUM > ANY (SELECT NUM
                        FROM   T_DOUBLON T2
                        WHERE  T_DOUBLON.NUM <> T2.NUM
                          AND  T_DOUBLON.NOM    = T2.NOM
                          AND  T_DOUBLON.PRENOM = T2.PRENOM)
    Note: la sous-requête est un select, on peut garder l'alias T2

Discussions similaires

  1. [Toutes versions] Problème avec requête pour compter
    Par damsmut dans le forum Requêtes et SQL.
    Réponses: 21
    Dernier message: 17/02/2011, 15h30
  2. Problème requête pour suppression
    Par sick35 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/05/2008, 15h42
  3. [Problème] Suppression de doublons pour grep
    Par maloute80 dans le forum Langage
    Réponses: 12
    Dernier message: 20/12/2007, 09h54
  4. Problème dans requête pour analyse croisée
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/06/2007, 09h54
  5. Problème de requête pour une relation de type n-n
    Par toutoune60 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/03/2007, 15h41

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