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

MySQL Discussion :

DISTINCT qui ne fait pas ce que j'attends.


Sujet :

MySQL

  1. #1
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut DISTINCT qui ne fait pas ce que j'attends.
    Bonjour, voila une table :
    Nom : phpMyAdmin   db426092375   hommes_roles.png
Affichages : 83
Taille : 113,4 Ko

    Voici son contenu trié par homrol_datedemiseajour décroissant :
    Nom : phpMyAdmin   db426092375   hommes_roles2.png
Affichages : 85
Taille : 140,1 Ko

    Et voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT(homrol_unite) FROM hommes_roles ORDER BY homrol_datedemiseajour DESC LIMIT 7;
    Je m'attends à extraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    386
    606
    2800
    1133
    2231
    22
    2237
    Alors que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    2800
    1133
    2231
    323
    33
    120
    13
    Quelle est mon erreur ?

  2. #2
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 31
    Points : 66
    Points
    66
    Par défaut
    La requete m'a l'air bonne pourtant ...

    Essaye de select aussi la date de tri on sais jamais en fonction des SGBD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT
    DISTINCT(HR.homrol_unite),
    HR.homrol_datedemiseajour 
    FROM
    hommes_roles HR
    ORDER BY
    HR.homrol_datedemiseajour DESC
    LIMIT 7;

  3. #3
    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 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    La syntaxe n'est pas bonne, l'order by doit utiliser des colonnes du select, c'est surprenant qu'il n'y ait pas un SQLCODE -xxx pour l'indiquer

  4. #4
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 31
    Points : 66
    Points
    66
    Par défaut
    Ça ne gène pas PhpMyAdmin.
    Le soucis c'est qu’effectivement des fois les requêtes ne fonctionnent pas comme ici alors que d'autre fois oui ...

  5. #5
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Merci à vous trois.

    Ça fonctionne et vous m'avez appris quelque chose.

    Merci

  6. #6
    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 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par benoitB Voir le message
    Merci à vous trois.
    Nous n'étions que 2

    Citation Envoyé par benoitB Voir le message
    Ça fonctionne et vous m'avez appris quelque chose.
    C'est tant mieux, pensez en ce cas à marquer en "résolu"

    Citation Envoyé par benoitB Voir le message
    Merci
    Vous pouvez remercier (ou blamer) les contributeurs en votant en bas des réponses

  7. #7
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    J'ai cru lire un jour que le "DISTINCT" n'était pas top à utiliser, qu'il fallait mieux utiliser la clause "GROUP BY".

    Qu'en est-il vraiment?

    Pierre

  8. #8
    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 benoitB.

    Vous faites un mauvais usage du distinct. Si vous désirez obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    386
    606
    2800
    1133
    2231
    22
    2237
    alors vous devez cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT(homrol_unite) FROM hommes_roles LIMIT 7;
    Vous aurez que les sept premiers valeurs distinctes de la colonne 'homrol_unite'.

    Si comme le recommande 'pier.antoine', il est possible de faire un 'group by'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select homrol_unite from hommes_roles group by homrol_unite order by homrol_unite limit 7;
    Le 'distinct' sélectionne les valeurs d'une colonne en un seul exemplaire.
    Si vous utilisez un tri comme dans votre exemple, mais sur une autre colonne, vous aurez toujours un seul exemplaire des valeurs mais selon un autre ordre.
    Le résultat que vous obtenez est tout à fait logique mais pas incorrecte.

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

Discussions similaires

  1. Boucle for() qui ne fait pas ce que je veux
    Par Tendhor57 dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2013, 19h58
  2. [MySQL] [deb.] Requête qui fait pas ce que je lui demande
    Par evevev dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/01/2012, 19h06
  3. if qui ne fait pas ce que je souhaite faire.
    Par Antoniom dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 10/12/2010, 12h04
  4. Une View qui ne fait pas ce que je veux
    Par EmmanuelleC dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/08/2009, 08h41
  5. [Système] bouton qui ne fait pas se que je veut
    Par schats dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 11h17

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