Partage
  • Partager sur Facebook
  • Partager sur Twitter

[mysql] Pb having max(id)

max ou min rien ne change

    16 décembre 2010 à 11:27:16

    bonjour tout le monde,

    Pour faire simple j'ai 2 tables,

    une pour les utilisateurs "user":
    - id auto incrément
    - un identifiant "num" unique par utilisateur
    - son nom "nom"

    et une autre table "score":
    - id auto-incrément
    - un identifiant correspondant à l'utilisateur "num"
    - un score "score"
    - une date "horodatage"


    J'aimerai afficher dans un tableau, la liste des utilisateurs avec leur dernier score

    on m'a déjà informé du HAVING, je me suis documenté, j'ai cherché mais je reste coincé.
    En effet, voici ma requete:

    SELECT u.nom, s.score, s.horodatage
    from user u, score, s
    where u.num = s.num
    group by s.score
    having max(s.id)
    



    Si je retire le HAVING, tous les score s'affichent
    si je met min(score) ou max(score), le premier score s'inscrit.
    si je rajoute select max(s.id) pour un membre précis, çà me retourne bien l'id du dernier score


    J'ai retourné la requête dans tous les sens, mais je ne comprend pas pour quoi le min et max donnent le même résultat o_O

    Merci d'avance

    PS: je n'ai pas la dernière version de mysql, jsuis sur wampapache d'il y a au moins 1 an
    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2010 à 12:17:36

      max(id) renvoie un résultat non nul donc having, qui attend une condition booléenne, est toujours satisfait.

      Je suppose que tu veux aussi la date du dernier score ?

      SELECT u.nom, sm.score, sm.horodatage
      FROM
      (SELECT num, max(score) AS score GROUP BY num FROM score) m
      JOIN score s ON (s.num = m.num AND s.score=m.score)
      JOIN user u ON (u.num=s.num)
      • Partager sur Facebook
      • Partager sur Twitter

      [mysql] Pb having max(id)

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown