Entwickeln von Benutzerchats in einer Web-App.MySQL Query zum Anzeigen des Chatverlaufs zwischen angemeldetem Benutzer und anderen Benutzern
Ziel: Liste der Benutzer in Desc-Reihenfolge anzeigen, mit denen der eingeloggte Benutzer einen Chat hatte und in der Nähe jedes Benutzers - die letzte Nachricht (entweder von diesem Benutzer oder vom angemeldeten Benutzer).
Aktuelle MySQL-Abfrage:
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
gut funktioniert. Aber! Für einen Chat eines beliebigen Benutzers A mit einem beliebigen Benutzer B zeigt die aktuelle Anfrage zwei Zeilen an: eine mit der neuesten Nachricht, die von Benutzer A an Benutzer B gesendet wurde, und eine letzte Nachricht von Benutzer B an Benutzer A. Während ich eine Zeile brauche (Unter einer "Zeile" verstehe ich eine Bootstrap-Zeile mit Daten, wobei Spalte 1 das Symbol des Benutzers ist, mit dem der Chat stattfindet, Spalte 2 ist die letzte Nachricht zwischen diesen 2 Benutzern und Spalte 3 ist die Zeit der letzten Nachricht.
Allerdings sollte die Anforderung, dass die Benutzer eine Anzeige und Benutzer B hatte einen Chat, und dies nur einmal angezeigt werden, mit dem die letzte Nachricht, die zwischen Benutzer A und B.
mein Gehirn über sie durchgebrannt. Ich möchte die Frage kurz halten und fühlen, dass ich in der Nähe bin, aber kann dieses Problem nicht lösen. Danke für jeden Hinweis!
Versuchen Sie, so etwas wie 'und user_to> user_from' in der inneren Abfrage die Symmetrie zu brechen –