8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'essaie d'afficher à un membre la liste des discussions en cours avec d'autres membres. Cette liste doit lui présenter uniquement le dernier message de la discussion comme aperçu.
Une discussion est définie par le premier message qui lance la discussion (champ "id_ref_msg"), tout les messages de la table qui ont un même "id_ref_msg" compose une discussion.

EX: Voici une seule discussion dont le 1er message est "hello".

http://oi46.tinypic.com/dpzsap.jpg

J'utilise la requête suivante qui fonctionne, sauf qu'elle ne sélectionne pas le dernier message d'une discussion mais le 1er !

SELECT  mFrom.nom_utilisateur AS sender_name, mp.message AS message
FROM msg_pv mp
INNER JOIN membresmvc AS mFrom 
	ON mp.id_from = mFrom.id
WHERE mp.id_to = :id_member   -- quand le membre est destinataire d'un msg
GROUP BY mp.id_ref_msg
ORDER BY mp.date_message DESC



Est-ce possible de faire ce que j'évoque en une seule requête ?
Euh pas du tout, ORDER BY mp.date_message ASC change l'ordre de la liste des discussions.

Ce que je voudrais c'est, pour une discussion listée (donc un élément de la liste), afficher le dernier message de cette discussion, pas le premier comme c'est le cas de ma requête.
Modifié par Tchernobyl (28 Apr 2012 - 18:48)
C'est pas ce que tu souhaites faire ? Récupérer le dernier message à la place du premier ? En inversant l'ordre de la liste des messages c'est que tu devrais obtenir, non ?
Salut,

Si tu veux trier le résultat d'un groupe by, dans tous les cas tu dois faire deux SELECT donc après à toi de voir pour les faires dans une seule requête. Mais le plus simple serait de faire deux requêtes de selection.
Modifié par perfectionniste (29 Apr 2012 - 11:21)