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 avec la clause DISTINCT


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème avec la clause DISTINCT
    Salut à tous !

    Je dispose d'une table de 8000 lignes.

    Et quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT monId FROM maTable ORDER BY monId
    Je me retrouve parfois avec des doublons ou même des triplets.

    J'ai bien cherché et je n'ai rien trouvé.

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 52
    Points : 59
    Points
    59
    Par défaut
    Bonsoir,

    Es tu sûr que se sont des "doublons absolus" ?

    Regarde le lien : http://sqlpro.developpez.com/cours/doublons/

    Cela pourra peut être te rendre service.

    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci

    Je pense qu'il ya en effet peu-être des doublons relatifs.

    Mais la requête me permettant de vérifier ne
    fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     SELECT DISTINCT *
    FROM   maTable T1
    WHERE  EXISTS (SELECT *
                   FROM   maTable T2
                   WHERE  T1.monId <> T2.monId
                     AND  T1.champ1    = T2.champ1
                     AND  T1.champ2 = T2.champ2)
    Voici l'erreur que me renvoie MySQL :
    #1064 - 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 'EXISTS (SELECT * ...

    J'ai aussi entré l'exemple présent dans la page : http://sqlpro.developpez.com/cours/doublons/

    et cette requête ne fonctionne pas :

    SELECT DISTINCT *
    FROM T_DOUBLON T1
    WHERE EXISTS (SELECT *
    FROM T_DOUBLON T2
    WHERE T1.NUM <> T2.NUM
    AND T1.NOM = T2.NOM
    AND T1.PRENOM = T2.PRENOM)



    Est-ce que quelqu'un aurait une idée (peut-être faut-il reformuler pour MySQL ?) ?

    J'ai trouvé d'ou venait le problème, ma version de MySQL n'était pas assez récente. Je vais analyser les résultat.

  4. #4
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2003
    Messages : 94
    Points : 116
    Points
    116
    Par défaut
    Bonjour

    As tu essayé de rechercher les lignes pour lesquelles un ID est représenté plus d'une fois par cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT ID, count(*) 
    FROM maTable group by 1
    having count(*) >= 2

    Selecta

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    L'ID a été généré par mes soins, il est donc unique. Mais je vais quand même tester au cas où, merci.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bon j'ai testé le

    SELECT ID, count(*)
    FROM maTable GROUP BY 1
    HAVING count(*) >= 2 et cela ne me renoi effectivement rien.

    Mais je n'arrive par contre pas à supprimmer mes doublons.

    La requête :
    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)
    ne fonctionne pas.

    MySQL me renvoie :

    #1064 - 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 'T
    WHERE T.NUM < ANY (SELECT NUM
    FROM T

Discussions similaires

  1. problème avec la clause LIKE
    Par guy_antoine_mav dans le forum C#
    Réponses: 7
    Dernier message: 05/01/2010, 09h56
  2. [AC-2003] Problème avec la clause "Group By"
    Par tarbala dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 01/08/2009, 17h53
  3. Réponses: 4
    Dernier message: 28/06/2007, 08h49
  4. Problème avec la clause SQL 'like' et 'order by'
    Par alexqc25 dans le forum WinDev
    Réponses: 1
    Dernier message: 25/05/2007, 19h47
  5. Problème avec l'argument DISTINCT en SQL
    Par Jeankiki dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/04/2006, 12h27

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