|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2005 Messages : 12 ![]() |
Bonjour tout le monde,
Je sèche un peu pour écrire ma requête : voilà, j'ai une table avec les colonnes a,b,c,d,... . Je voudrais rechercher les lignes où, pour une valeur donnée dans a, et une valeur données dans b, c est maximum, et ce bien sûr pour toutes les valeurs de a et b. Pour expliquer un peu plus, a et b identifient des personnes et des formulaires, et c un niveau d'itération. Par exemple, la premiere fois que la personne a0 remplie le formulaire b0, c vaut 1, mais pour la deuxième fois, les réponse sont enregistrées avec c=2. Je voudrais ne garder que les derniers essais. J'ai essayer de jouer avec la fonction max(), mais je n'obtiens pas vraiment ce que je veux. Merci de votre aide ! Alexis ps : j'utilise postgresql 8.2 |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Je ne suis pas sûr d'avoir compris, mais si pour chaque couple (a,b) distinct, tu cherche le max de c, la requête est :
Code :
SELECT a,b,max(c) FROM TABLE GROUP BY a,b
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
bonjour,
je suis pas sur de comprendre, mais as tu essayer une requete du genre : SELECT a,b,max(c) FROM matable GROUP BY a,b ? |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
oups, j'ai répondu un peu tardivement scheu
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2005 Messages : 12 ![]() |
Merci,
J'étais arrivé à ce genre de requête, mais ça ne fait pas totalement ce que je veux. Je n'ai peut-être pas été clair : pour chaque couple (a,b), il y a plusieurs valeurs de c, et à chaque fois plusieurs valeurs des autres colonnes ( d,e,... ) Ce que je voudrais, c'est récupérer toutes les colonnes, pour le maximum de c pour chaque couple a,b. Pour résumé : SELECT * FROM TABLE WHERE ( c est un maximum pour le couple (a,b) ) Peut-être que cela correspond à une sous-requête, comme tu le suggères, scheu, mais je ne vois toujours pas très bien comment. Alexis |
|
|
00
|
|
|
#6 | |||
|
Membre éclairé
![]() Inscription : janvier 2006 Messages : 332 ![]() |
Bonjour,
Citation:
Code :
|
|||
|
|
00
|
|
|
#7 | |||||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Citation:
Code :
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|||||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : janvier 2006 Messages : 332 ![]() |
... est essentiel pour retourner les résultats voulus. Ne pas le mettre est une erreur. Les autres "as" sont optionnels.
|
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : février 2005 Messages : 12 ![]() |
Merci beaucoup, avec ça j'ai de qu'il me faut
A. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com