|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2005 Messages : 14 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : septembre 2003 Messages : 302 ![]() |
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 |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2005 Messages : 14 ![]() |
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 :/ |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : septembre 2003 Messages : 302 ![]() |
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 |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2005 Messages : 14 ![]() |
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 |
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : juin 2005 Messages : 112 ![]() |
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. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2005 Messages : 14 ![]() |
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 |
|
|
00
|
|
|
#8 | |
|
Nouveau Membre du Club
![]() Inscription : juin 2005 Messages : 112 ![]() |
Citation:
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... |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com