Développement de la discussion utilisateur dans une application Web.Requête MySQL pour afficher l'historique de discussion entre l'utilisateur connecté et les autres utilisateurs
Objectif: afficher la liste des utilisateurs dans l'ordre décroissant avec lequel l'utilisateur connecté a eu une conversation et à proximité de chacun de ces utilisateurs - le dernier message (écrit par cet utilisateur ou l'utilisateur connecté).
requête MySQL actuelle:
SELECT id,
user_to,
user_from,
body,
msg_time
FROM chat
WHERE id IN (SELECT MAX(id)
FROM chat WHERE user_to=:id
OR user_from=:id
GROUP BY user_to,user_from)
ORDER BY msg_time DESC
fonctionne bien. Mais! Pour une conversation de tout utilisateur A avec un utilisateur B, la requête en cours affiche 2 lignes: une avec le message le plus récent envoyé par l'utilisateur A à l'utilisateur B, et un message le plus récent envoyé par l'utilisateur B à l'utilisateur A. sous une "ligne" je veux dire une ligne de données bootstrap, où la colonne 1 est l'icône de l'utilisateur avec lequel le chat a lieu, la colonne 2 est le dernier message entre ces 2 utilisateurs et la colonne 3 est l'heure de ce dernier message).
Cependant, la demande doit afficher que l'utilisateur A et l'utilisateur B a une conversation, et afficher uniquement cette fois, le message le plus récent fait entre l'utilisateur A et B.
Blown mon cerveau au-dessus. Je veux garder la question courte et sentir que je suis proche, mais ne peux pas enfin résoudre celui-ci. Merci pour tout conseil!
essayer d'ajouter quelque chose comme 'et user_to> user_from' dans la requête interne pour briser la symétrie –