Problème SQL

Résolu
grecoriz Messages postés 49 Date d'inscription   Statut Membre -  
grecoriz Messages postés 49 Date d'inscription   Statut Membre -
Bonjour,

J'ai une table avec des enregistrements

user - date connexion - score
greg1 - 20071112 - 50
greg1 - 20071113 - 60
greg2 - 20071115 - 70
greg2 - 20071115 - 80

Je voudrais récupérer pour chaque user la ligne du meilleur score, comment faire?

j'ai essayé avec les distinct, mais ca ne fonctionne pas
j'ai essayé avec le having aussi mais sans succès.

Si quelqu'un a une piste ou la réponse, je suis preneur.

D'avance merci
Configuration: Windows XP
Firefox 2.0.0.9

13 réponses

  1. ZOUARI Messages postés 62 Statut Contributeur 29
     
    Pour résoudre ce problème il faut utilisé la fonction Max donc on oura la requêtte SQL suivante:

    SELECT user, Max(score) AS MeilleureScore
    FROM table1
    GROUP BY user;

    1
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Select max(score) From myTable Where User = 'myUser'

    ;o)

    Polux
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Oupsss très juste ZOUARI, moi je n'ai que le meilleur score d'un user ... j'avais pas bien tout lu ...

    ;o)

    Polux
    0
  4. grecoriz Messages postés 49 Date d'inscription   Statut Membre 5
     
    Bonjour,

    Merci de vos réponses mais dans ce cas, je n'ai pas la date a laquelle il a réaliser ce meilleur score !!
    et si je rajoute

    select user, date_connexion, Max(score)
    from table1
    group by user, date_connexion


    ben la j'ai mon tableau entier qui ressort !

    D'autres idées?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. OriOnz750 Messages postés 15 Statut Membre 11
     
    Plop, essaye ça :

    Select user, date_connexion, max(score) as MeilleurScore
    from table1
    group by user
    0
  7. grecoriz Messages postés 49 Date d'inscription   Statut Membre 5
     
    Merci orionz pour ta réponse,

    cependant ca me génère une erreur disant que date_connexion n'est pas valable car il n'est pas dans une fonction d'agrégation ou dans une clause group by.
    Et quand je le met dans le group by, j'ai toute les lignes qui ressortent.

    je me demande si c'est possible!

    si niais : grecoriz
    0
  8. OriOnz750 Messages postés 15 Statut Membre 11
     
    plop, j'ai vérifié, voila ce que j'obtiens :

    création de la table, avec tes enregistrements :

    CREATE TABLE `table1` (
    `user` VARCHAR( 20 ) NOT NULL ,
    `date_connexion` VARCHAR( 20 ) NOT NULL ,
    `score` INT NOT NULL
    );

    INSERT INTO `table1` ( `user` , `date_connexion` , `score` )
    VALUES ('greg1', '20071112', '50'),
    ('greg1', '20071113', '60'),
    ('greg2', '20071115', '70'),
    ('greg2', '20071115', '80');

    requete pour récuperer le meilleur score pour chaque user :

    SELECT user, date_connexion, max( score ) AS MeilleurScore
    FROM table1
    GROUP BY user
    LIMIT 0 , 30

    résultats de la requete :


    user - date_connexion - MeilleurScore
    greg1 20071112 60
    greg2 20071115 80

    ca marche donc chez moi, tu peux me dire ce que tu obtiens avec la meme démarche ?
    0
    1. lea star
       
      salut orionz750
      je sais pas ou te contacter c est pour ca que je fais ca par le biais de ce site ou j ai pour habitude de venir observer tes réponses que je toruvent si pertientes et ta générosité envers les autres.
      aprés des années passées en cachette je te le déclare en fin: JE T AIME. je ne voulais pas paraitre ridicule et n osais te poser de questions de peur de paraitre sote mais aujourd hui je passe enfin a l act.je ne suis pas geekette c est pour ca que j ai commencé a fréquenter ce site mais j e t ai déocuvert et dessuite est tombée sous le charme. accepterais tu de me rencontre si par chance tu habites a bordeaux je dirai a tout hasar allées des chartres ce jeudi a 12H?? j en serais vraiment toute émoustillée. merci d avance pour ta réponse tant attendue
      0
      1. ShaBoo Messages postés 406 Statut Membre 50 > lea star
         
        et on pourra te reconnaitre comment ??? ;p
        0
    2. ShaBoo Messages postés 406 Statut Membre 50
       
      trop top ... c'est la premiere fois que je vois ça ...

      Le premier mariage sur CCM en vue ???
      0
  9. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bloc note : * Penser à demande un forum Agence Matrimoniale ...

    Bravo Léa, belle déclaration ... ça règle pas le problème de grecoriz, mais c'est beau ... bonne chance à toi

    ;o)

    Polux
    0
  10. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Va y avoir du monde demain à midi sur les allées de chartres à Bordeaux ....

    ;o)
    0
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      xpdrrrrr
      0
      1. lea star > ShaBoo Messages postés 406 Statut Membre
         
        Bonjour,
        merci de votre soutien ce n est pas facil pour moi de me déclarer. et aussi merci de me faire penser a une petite description pour se reconaitre. je porterai un bonnet blanc et une echarpe noir rien de bien spéciale mais ca sufira. je suis assez petite cheuveux mi longs. je suis dsl de "squatter" votre forum pour des questions autre qu informatique mais c est tres important pour moi. et oui, prq pas un forum 'rencontres' ca serait bien util^^ et PS: orionz750 je modifie le lieu de rdv. je t attendrai allées de tourny leiu plus connu et plus facile pr toi a repérer. a demain j espere vraiment te voir
        0
      2. ShaBoo Messages postés 406 Statut Membre 50 > lea star
         
        cheuveux mi longs

        Brune, Blonde, Rousse ???
        0
  11. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Hé les gars, c'est pas allées de chartres ... c'est allées de tourny maintenant, même heure ... bonnet blanc et écharpe noire ... c'est noté ...
    0
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      et pour ceux qui savent pas ou cela se trouve, c'est ici

      ;p
      0
  12. lea star
     
    chatain mais détrompez vous je saurai reconnaitre orionz750 parmi tant d autres. je ne te connais pas ms j ai l impression d etre si proche de toi que je pourrai te reconaitre sans mm t avoir vu. imposteurs abstenez vous!!
    0
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      zut ... je voulais venir avec mon arrosoir

      ;p
      0
  13. OriOnz750 Messages postés 15 Statut Membre 11
     
    noulish xD

    avant de commencer dsl grecoriz de pourrir ton post mais il le faut (préviens moi quand meme si la requete marche) :p
    arf ca l'aurait fait si ca aurait été vrai et qu'on se soit rencontré comme ca mais ca existe que dans les films tout ca ^^
    désolé pour tous ceux qui y ont cru mais je la connais...c'est ma copine depuis 5ans en fait -_-' mais bon jtrouve ca classe ta ptite attention chou
    pas de pb ma puce on mange ensemble demain comme d'hab, d'ailleurs si des gens veulent se joindre à nous (bah ouais, tu fais ta trollette (jtexpliquerai ce que c'est), t'assumes), ca sera bien à midi allées de tourny et elle à pas menti en se décrivant, par contre oubliez le bonnet blanc (pas moyen que tu le mettes demain). et les filles de CCM, hésitez pas a prendre exemple :p

    bonne soirée
    0
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      pas de prob ... j'y serais ;p
      0
      1. lea star > ShaBoo Messages postés 406 Statut Membre
         
        ok le rdv est prit alors disons devant l enseigne de thomas cook voyages. ue non pas de bonnet mais une petite ac un skateur c est nous:) a demain
        0
    2. grecoriz Messages postés 49 Date d'inscription   Statut Membre 5
       
      Bonjour,

      Non pas de problème pour ces petites attentions, c'est plutôt bien.

      Sinon, lorsque je fais cette requête

      SELECT user, date_connexion, max( score ) AS MeilleurScore
      FROM table1
      GROUP BY user


      J'ai ce message d'erreur

      La colonne 'table1.date_connexion' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.

      Et lorsque je rajoute le group by, je lance donc cette requête (j'ai mis user

      SELECT user, date_connexion, max( score ) AS MeilleurScore
      FROM table1
      GROUP BY user, date_connexion


      et j'obtiens comme résultat :


      greg1 20071112 50
      greg1 20071113 60
      greg2 20071115 80

      ca marche quand la date est la meme mais pas pour greg1 ou on a deux dates différentes.

      Je précise quand même que je suis sous sql server 2000.

      Merci merci et "bon appétit"
      0
      1. ShaBoo Messages postés 406 Statut Membre 50 > grecoriz Messages postés 49 Date d'inscription   Statut Membre
         
        Bonjour,

        As tu essayé ceci :

        SELECT user, date_connexion, max( score ) AS MeilleurScore
        FROM table1
        GROUP BY user, date_connexion
        HAVING max( score )
        ORDER BY user
        0
      2. grecoriz Messages postés 49 Date d'inscription   Statut Membre 5 > ShaBoo Messages postés 406 Statut Membre
         
        Merci Shaboo, mais malheureusement, il n'a pas l'air d'aimé le having max(score) sans rien derrière.

        A Bientôt

        ^_^
        grecoriz
        0
  14. grecoriz Messages postés 49 Date d'inscription   Statut Membre 5
     
    wazaaaaa

    J'ai trouvé !!
    Il y a peut être plus élégant mais pour l'instant ca marche,

    voila la requete que j'ai lancé :

    SELECT t1.user, t1.date_connexion, t1.score
    FROM table1 t1, (select t1bis.user, max(t1bis.score) as MeilleurScore from table1 t1bis GROUP BY t1bis.user) t2
    where t1.user = t2.user
    and t2.meilleurscore = t1.score


    et le résultat tant attendu

    greg2 20071116 90
    greg1 20071113 60


    PS : j'avais rajouté un enregistrement et j'avais ces données en base :
    greg1 20071112 50
    greg1 20071113 60
    greg2 20071115 70
    greg2 20071115 80
    greg2 20071116 90


    Merci en tout cas, il ne me reste plus qu'a transcrire à mon cas qui est légèrement plus complexe.

    A bientot et tous mes voeux de bonheur à orionz et lea star !!! et encore et toujours bon appétit( c'est important)
    0