Requête SQL

Bertrand -  
 Bertrand -
Bonjour,
Dans une table Treponses j'ai un champs auto-incrémenté numReponse, un champs userID, nomfichier et score. Je souhaite sélectionner (et grouper) ma table par le champs nomfichier et avoir le dernier score enregistré. Donc celui dont le numReponse est le plus élevé. Je fais :
select userID,nomfichier,score,max(numReponse) from
Treponses where (nomfichier='fichier1.asp' or nomfichier='fichier2.asp') and userID=1 group by nomfichier order by numReponse desc

Mon group by fonctionne comme je veux puisque le nom d'un fichier n'apparait qu'une fois, par contre ma colonne score ne contient pas celui qui correspond au dernier enregistrement.
Pouvez-vous m'aider ?
Merci !

6 réponses

ciak
 
ta question n'est pas tres claire .
pourquoi
'where (nomfichier='fichier1.asp' or nomfichier='fichier2.asp') '
0
Fritz
 
Ben deja ton group by et order by, ils ne servent a rien car la requete va te renvoyer qu'un seul resultat...
celui avec max reponse
0
nebulus Messages postés 47 Statut Membre 4
 
Salut,

Ceci fonctionnerait-il mieux ?
select a.userID, a.nomfichier, a.score, a.numReponse
  from Treponses a
 where a.numReponse = ( select max(b.numReponse) from Treponses b
                         where (b.nomfichier='fichier1.asp' or b.nomfichier='fichier2.asp')
                           and b.userID=1)


@+
Nebulus
En route pour de nouvelles aventures !
0
Bertrand
 
Hello Nebulus,
non ça ne fonctionne pas, j'ai oublié de préciser que j'utilises mySQL 4.14 qui ne gère pas je crois les select multiple.
Merci,
bertrand
0
nebulus Messages postés 47 Statut Membre 4
 
Salut,

C'est étrange, j'ai été voir la doc MySql et ils disent que les sous-selects sont implémentés en 4.1 ( voir http://www.mysql.com/doc/en/Nutshell_4.1_features.html) !?
Bon, comme je n'ai encore qu'une "vieille" 3.32, je peux pas tester et te dire ce que ça donne chez moi...

@+
Nebulus
En route pour de nouvelles aventures !
0
Bertrand > nebulus Messages postés 47 Statut Membre
 
Effectivement, et pourtant la requête que tu m'avais conseillé d'essayer n'était pas très complexe, c'est étonnant qu'elle n'ait pas fonctionnée.
Merci pour ton aide !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jb
 
Je sais pas si ca marche LAST() sous MySql 4:

select userID,nomfichier,Last(score),max(numReponse) from Treponses where (nomfichier='fichier1.asp' or nomfichier='fichier2.asp') and userID=1 group by nomfichier order by numReponse desc

jb
0
Bertrand
 
Merci pour ta réponse mais ça ne fonctionne pas :-(
0