Requête SQL

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

  1. ta question n'est pas tres claire .
    pourquoi
    'where (nomfichier='fichier1.asp' or nomfichier='fichier2.asp') '
    0
    1. 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
      1. 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
        1. 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
          1. 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
          2. @nebulusEffectivement, 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
        2. 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
          1. Merci pour ta réponse mais ça ne fonctionne pas :-(
            0