Ich versuche, eine Konversationsliste wie WhatsApp neu erstellen, wo es den Kontaktnamen der Person, mit der Sie eine Unterhaltung haben und auch die Uhrzeit der Nachricht und auch gepostet Die letzte Nachricht, unabhängig davon, ob sie von Ihnen stammt oder von dem Kontakt, der die Nachricht gepostet hat. Mit anderen Worten, ich muss immer den Kontaktnamen und das letzte Mal sehen, wann die Nachricht gepostet wurde und die letzte Nachricht, die von mir oder der Empfänger, muss ich auch das Bild des anderen Benutzers aus der Benutzertabelle zurückholen. entlangMySQL beitreten 2 Tabellen und den neuesten Zeitstempel und Nachricht
Tabelle Benutzer
userid | first_name | url |
---------------------------------------------
101 | name1 | www.image_url1.jpg |
102 | name2 | www.image_url2.jpg |
103 | name3 | www.image_url3.jpg |
104 | name4 | www.image_url4.jpg |
MELDUNGEN TABLE
MessageId | userid | senderid | message | timestamp |
-----------------------------------------------------------
1 | 101 | 102 | message1 | 1234567 |
2 | 102 | 101 | message2 | 1234578 |
3 | 101 | 102 | message3 | 1235679 |
4 | 104 | 101 | message4 | 1256379 |
Was ich versuche, aus der Datenbank abfragen, wenn meine Benutzer-ID = 101 die letzte Nachricht und Zeitstempel entweder von mir oder den Kontakt mit den Kontakten Benutzer-ID, Vorname und URL
1) Ich möchte die Verwendung extrahieren rid,
2) und die neueste Nachricht und Zeitstempel aus der Nachrichtentabelle Auszug aus dem Kontakt
Also mit anderen Worten muss ich entweder first_name und URL der Kontakt von der Benutzer-Tabelle geschrieben, die letzte Nachricht und Zeitstempel zeigen ich oder der andere Kontakt aus der Nachrichtentabelle und die URL und der Benutzername aus der Benutzer-Tabelle, aber nicht mein Benutzername und Bild-URL nur die Kontakte. Hier
ist die Abfrage Ich habe bisher
SELECT DISTINCT users.userid, users.first_name, users.url, message, MAX(messages.timestamp) AS utime FROM messages JOIN users ON users.userid = messages.senderid WHERE users.userid <> '101' AND (messages.userid = '101' OR messages.senderid = '101') GROUP BY 1,2,3 ORDER BY utime DESC
Ich habe versucht, auch die, unter dem nicht ganz Arbeit
SELECT DISTINCT mems.userid, mems.first_name, mems.url, message, MAX(messaging.timestamp) AS utime
FROM messaging
JOIN mems
ON mems.userid = CASE
WHEN
messaging.senderid = '101'
THEN
messaging.userid
ELSE
messaging.senderid
END
WHERE mems.userid <> '101' AND (messaging.userid = '101' OR messaging.senderid = '101')
GROUP BY 1,2,3 ORDER BY utime DESC
Wenn Sie diese Art von Frage veröffentlichen, ist es auch üblich, Ihren Versuch zu posten. – e4c5
Sorry, gewöhne dich immer noch an diese Seite – TRicks
Keine Sorge. Wenn du es selbst herausgefunden hast, darfst du deine eigene Antwort auf die Frage posten und sie als korrekt akzeptieren. – e4c5