Ich versuche, eine Liste der Gespräche und die damit verbundenen Teilnehmer in einer Zeile zusammen mit der letzten Nachricht für einen bestimmten Benutzer zu erhalten. Das Ergebnis, das ich suche, ist das:SQL Query mehrere Werte der gleichen Spalte in einer Zeile
**| conversationId | participants | text | timestamp |**
67 aester,bester Hello 00:00:00
Das obige Modell ist nur eine Zeile. Ich versuche alle Zeilen mit dem obigen Ergebnis zu erhalten. Die Textspalte ist die letzte dieser Konversation zugeordnete Nachricht.
Hier sind meine Modelle:
Benutzer
userId|username|
87 aester
89 cester
96 bester
Conversations
|conversationId|
67
68
Nachrichten
| messageId | text | timestamp | conversation_id | user_id
41 Hello 00:00:00 67 87
42 Hey 00:00:00 68 89
UserConversations
| id | conversation_id | user_id
3 67 87
4 67 96
5 68 89
Wie kann ich die oben genannten Modelle abfragen, um das gewünschte Ergebnis zu erhalten?
CURRENT UPDATE:
SELECT conversations.`conversationId` as conversationId,
GROUP_CONCAT(users.`username`) as participants FROM users
LEFT JOIN user_conversations
ON users.`userId` = user_conversations.`user_id`
LEFT JOIN conversations
ON user_conversations.`conversation_id` =
conversations.`conversationId`
WHERE EXISTS (SELECT * FROM user_conversations WHERE
user_conversations.user_id = 87)
GROUP BY conversations.`conversationId`;
Die oben wird diese Herstellung das ist, was ich will, außer ich herausfinden kann nicht, wie sich die letzten Meldungen in jeder Zeile erhalten auch:
| conversationId | participants |
67 aester,bester
68 cester
Prüfung [** GROUP_CONCAT() **] (https://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php) –
Ich habe versucht, mit GROUP_CONCAT, aber es gibt alle Teilnehmer in der gleichen Zeile zurück, auch wenn sie nicht zur Konversation gehören – samuscarella
Zeige uns db Schema, Beispieldaten, aktuelle und erwartete Ausgabe. \t Bitte lesen Sie [** How-to-Frage **] (http://stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein toller Ort, um [** START **] (http://spaghettiba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) um zu erfahren, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. \t [** So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel **] (http://stackoverflow.com/help/mcve) –