Ich brauche ein einfaches internes Nachrichtensystem zwischen Benutzern.
Meine Tische:
+--------------+ +---------------------+
| messages | | users |
+----+---------+ +---------------------+
| id | message | | id | username | ...
+----+---------+ +---------------------+
+------------------------------------------------------------------------------+
| users_messages |
+------------------------------------------------------------------------------+
| id | from_usr_id | to_usr_id | msg_id | thread_id | read | sent_at | read_at |
+------------------------------------------------------------------------------+
INT 'thread_id'
stellt den Gesprächsfaden dar und dient der Gruppierung von Nachrichten.
BOOLEAN 'read'
gibt an, ob der Nutzer die Nachricht geöffnet/angesehen hat oder nicht.
Ich möchte Nachrichten gruppieren nach 'thread_id'
, sortiert nach 'sent_at'
damit ich dem Benutzer seine letzten Nachrichten nach Thema anzeigen kann. Ich möchte auch die Nachrichten in jedem Thema zählen.
Ich möchte etwas Ähnliches für eine bestimmte Benutzerkennung erhalten:
+----------------------------------------------------------------------------
| last_messages_by_conversation
+----------------------------------------------------------------------------
| message | from_username | sent_at | count_thread_msgs | count_unread_msg |
+----------------------------------------------------------------------------
TEXT 'message'
ist die letzte Nachricht in der spezifischen 'thread_id'
VARCHAR 'from_username'
y DATETIME 'sent_at'
sich auf die letzte Nachricht beziehen.
INT 'count_thread_msgs'
y INT 'count_unread_msg'
beziehen sich auf den Thread und geben die Gesamtzahl der Nachrichten und die Anzahl der ungelesenen Nachrichten im Thread an.
Jede Zeile steht für einen Thread/eine Konversation (gruppiert nach 'thread_id'
), die die letzte Nachricht anzeigt (sortiert nach 'sent_at'
) für diesen speziellen Thread.