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

  1. ciak
     
    ta question n'est pas tres claire .
    pourquoi
    'where (nomfichier='fichier1.asp' or nomfichier='fichier2.asp') '
    0
  2. 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
  3. 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
  4. 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
    1. 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
      1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. Bertrand
     
    Merci pour ta réponse mais ça ne fonctionne pas :-(
    0