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

PostgreSQL Discussion :

SELECT DISTINCT ... ORDER BY


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut SELECT DISTINCT ... ORDER BY
    Bonjour,

    J'ai une table du style

    col1 | col2
    -------------
    a | 4
    a | 5
    b | 1
    b | 3


    J'aimerais faire une requête du style :

    SELECT DISTINCT col1 FROM tab ORDER BY col2

    mais la clause ORDER BY est difficile a utiliser avec DISTINCT auriez-vous une idée ?

    le but étant de ramener

    col1
    ----
    b
    a

  2. #2
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    g pas testé mais g trouvé un truc sur le net.
    regardes de ce coté : http://archives.postgresql.org/pgsql-novice/2003-11/msg00031.php

  3. #3
    Membre averti
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    Merci pour le lien, mais j'ai tenté cette solution sans y parvenir.

    SELECT DISTINCT ON (col1) col1, col2 FROM tab ORDER BY col1, col2

    marche , mais

    SELECT DISTINCT ON (col1) col1, col2 FROM tab ORDER BY col2,col1

    marche pas.

    Le problème vient du fait que col1 est obligé d'être le premier critère de la clause ORDER BY , sinon ca gueule :/

  4. #4
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    je viens de tester et c vrai que ça merde.
    Fais une petite recherche sur google car il y a l'air d'avoir pleins de sujets traités à propos de ton problème. J'ai pas trop le temps de creuser en fait mais tu devrais trouver la réponse et si tu la trouves, postes la car ça peut être intéressant

    bon courage

  5. #5
    Membre averti
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    Merci du conseil, mais en général je post sur les forum qu'en dernier recourt ...

    J'avais déja trouvé le lien que tu as donné , mais sans résultat ...
    En fait , le gars semble s'en sortir sur la fin , mais j'ai pas compris comment, il faut dire que son exemple n'est pas trivial.

    Et mon anglais est peut être un peu limite aussi ...

    Vous êtes mon dernier recourt

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Par défaut
    j'ai presque le même probléme que toi, j'ai pas envi de créer un nouveau post !!

    je fais select champ1, champ2 from table1 group by champ1
    et ça me dit :

    ERROR: column "champ2" must appear in the GROUP BY clause or be used in an aggregate function

    et moi j'ai pas envi de grouper suivant "champ2"....

    j'ai rien compri, normalement c'est du sql et ça doit passer, ou bien je me trompe ?

    merci d'avance.

  7. #7
    Membre averti
    Inscrit en
    Février 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 23
    Par défaut
    dans ton cas champ2, doit être une aggregation, c'est à dire un count(*) ou un SUM(champ2) , etc ...

    SELECT col1,count(*) FROM tab group by col1

    ou SELECT col1,SUM(col2) FROM tab group by col1

    Voila, ca devrait régler ton cas , mais pas le mien

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 112
    Par défaut
    Citation Envoyé par amenis

    SELECT col1,count(*) FROM tab group by col1

    ou SELECT col1,SUM(col2) FROM tab group by col1
    merci quand même, mai ce que je veux c'est d'avoir en résultat les deux colonnes col1, col2 groupées suivant col1, j'ai bricolé en utilisant "Distinct" mais bon...

    ce que j'aurai aimé avoir c'est une requete plus simple :
    select * from tab1 group by col1;
    cette requete, et s'il n'y aucune ligne répétée dans la base, serait équivalente à :
    select distinct * from tab1;

    supposant que la seul solution c'est de passer par une agrégation ou faire apparaitre les mêmes colonnes dans la clause 'group by', je trouve que c'est inefficace cette histoire de 'group by', et ce, avec tout mon respect pour les concepteurs sql de postgresql...

Discussions similaires

  1. [AC-2003] Select Distinct et Order by : possible ?
    Par Monkey_D.Luffy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/07/2010, 18h44
  2. select Distinct champ, order by timestamp
    Par DonkeyMaster dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/01/2008, 18h45
  3. select distinct substring
    Par nmerydem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/06/2004, 16h58
  4. Select distinct et order by
    Par arsgunner dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/06/2004, 11h17
  5. equivalent SELECT DISTINCT pour MyBase?
    Par chrisou31 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 19h33

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