ich die Nachrichten-Tabelle wie folgt formatiert:Abfragen Gespräche von Nachrichten Tabelle
+------------------------------------------------------------------+
| id|sender_id| recipient_id | message_text |created_at |
+------------------------------------------------------------------+
| 1 | 2 | 10 | "test1" |"2017-04-10 09:05:45" |
| 2 | 10 | 2 | "test2" |"2017-04-10 09:05:47" |
| 3 | 2 | 4 | "test3" |"2017-04-10 09:05:49" |
| 4 | 10 | 4 | "test4" |"2017-04-10 09:05:51" |
| 5 | 4 | 2 | "test5" |"2017-04-10 09:05:53" |
| 6 | 2 | 10 | "test6" |"2017-04-10 09:05:58" |
+------------------------------------------------------------------+
Was ich versuche ein alle „Gespräche“ des Benutzers (zB Benutzer mit id 2) angemeldet zu tun ist, erhalten zusammen mit den letzten Nachrichten für diese Konversation. konnte ich die IDs der Benutzer user2 ziehen hat Meldungen bei der Verwendung dieser Abfrage:
select distinct users.id
from messages, users where
(recipient_id = 2 and users.id = sender_id)
or
(sender_id = 2 and users.id = recipient_id);
Was ergibt dies ist
4
10
als benutzer2 entweder Nachrichten von diesen beiden Personen gesendet und/oder empfangen hat (test1, test2, test6
für 10
und test3, test5
für 4
).
Was kann ich nicht tun, ist diese Abfrage ändern, so dass es auch die letzte Nachricht gesendet oder empfangen werden durch die erbrachte id liefert - zum Beispiel
4 | test5
10 | test6
Das gibt mir tatsächlich fast das Ergebnis, das ich brauche, aber ich brauche die Nachrichten der letzten Nachrichten statt ihrer Daten.Wenn ich nur Nachrichtentext hinzufüge, um auszuwählen, ist der Teil, den Sie mit Daten gemacht haben, immer noch korrekt, aber Nachrichten, die ich bekomme, stimmen nicht mit den Daten überein. Ich mag den Ansatz. Könnten Sie mir auch erklären, wie Sie zu dieser Lösung gekommen sind? – hpdobrica
die modifizierte Abfrage funktioniert wie ein Charme! Ich würde wirklich gerne ein bisschen darüber hören, was du dort gemacht hast, ich will es nicht einfach kopieren/einfügen haha :) – hpdobrica
@hpdobrica Ich gab dir eine tiefere Erklärung. –