OK, ce n'était pas clair (enfin, je n'avais pas compris ça

)
On reprend :
SELECT MAX(date) FROM matable
renvoie la date la plus récente.
Maintenant tu veux aussi avoir les id_article.
SELECT id_article, MAX(date) FROM matable
Mais ça renvoie une erreur
MAX() est un opérateur de groupe - il prend plusieurs enregistrements et en retourne un construit à partir de ces enregistrements.
Si on veut avoir d'autres champs, il faut opérer un groupement dessus :
SELECT id_article, MAX(date) FROM matable GROUP BY id_article
Va renvoyer, pour chaque
id_article, le MAX des
date.
en règle générale, quand on utilise un opérateur de groupe (MAX, COUNT, MIN, ...) les autres champs demandés doivent être regroupés avec une clause GROUP BY.