Bonjour bonjour !
J'ai ce petit problème lors de la requête des participants à une discussion, dont je voudrais aussi avoir la date du dernier message et son contenu. Ceci se base sur une seule table, messages, contenant notamment les champs id_user, content, datetime.
Je simplifie autant que possible (en prenant soin de ne rien enlever d'important), mais voici ma requête :
Vous l'aurez compris, mon problème consiste à extirper le contenu du dernier message de chaque auteur. Le GROUP BY fait que seul la première valeur est sélectionnée, donc le message le plus ancien (la table étant bien entendu ordonnée ainsi). J'ai songé à diverses possibilités, comme faire un GROUP_CONCAT(content) ORDER BY datetime DESC en mettant précédemment group_concat_max_len à 1... mais c'est un petit trick qui peut sûrement être évité. J'aimerai aussi éviter les solutions à base de requêtes imbriquées, que je pense pénalisante pour la rapidité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT id_user, MAX(datetime) AS datetime, content ??? FROM messages GROUP BY id_user ORDER BY datetime DESC');
Voilà, je bloque, et votre avis serait grandement apprécié !
Merci d'avance
Gagee






Répondre avec citation
Partager