Hallo zusammen,
folgendes Problem:
Tabelle messages hat u.a. folgende Felder:
id, timestamp, user1, user2, msg
Mögliche Datensätze:
0 | timestamp | 1 | 2 | huhu
1 | timestamp | 2 | 1 | hallo
2 | timestamp | 2 | 1 | hallo?
3 | timestamp | 1 | 2 | ja?
4 | timestamp | 1 | 3 | huhu
5 | timestamp | 3 | 1 | hi
6 | timestamp | 3 | 2 | hallo
... usw.
Ich möchte nun den aktuellsten Wert eines jeden "User-Paares" in dem der User mit der ID 1 vorkommt (1&2/2&1, 1&3/3&1, ...) ermitteln, so performant wie möglich. Leider stehe ich auf dem Schlauch.
Ansatz:
Ich habe etwas mit GROUP BY, DISTINCT und LIMIT herumgespielt, aber bin nicht viel weiter gekommen. Vielleicht hilt da ein Subquery?
Momentan filter ich die Daten per PHP, aber das ist die absolute Notlösung.
Freue mich auch Antworten, Danke!
folgendes Problem:
Tabelle messages hat u.a. folgende Felder:
id, timestamp, user1, user2, msg
Mögliche Datensätze:
0 | timestamp | 1 | 2 | huhu
1 | timestamp | 2 | 1 | hallo
2 | timestamp | 2 | 1 | hallo?
3 | timestamp | 1 | 2 | ja?
4 | timestamp | 1 | 3 | huhu
5 | timestamp | 3 | 1 | hi
6 | timestamp | 3 | 2 | hallo
... usw.
Ich möchte nun den aktuellsten Wert eines jeden "User-Paares" in dem der User mit der ID 1 vorkommt (1&2/2&1, 1&3/3&1, ...) ermitteln, so performant wie möglich. Leider stehe ich auf dem Schlauch.
Ansatz:
PHP-Code:
# Alle Datensätze holen, in denen User 1 vorkommt:
SELECT ...
FROM ...
WHERE user1 = 1
OR user2 = 1
ORDER BY timestamp DESC
Momentan filter ich die Daten per PHP, aber das ist die absolute Notlösung.
Freue mich auch Antworten, Danke!
Kommentar