Ich bin Senden der Benachrichtigung an mehrere Geräte. Der Benutzer kann sich von mehreren Geräten aus anmelden. Ich habe separate Tabelle, die die Geräte-IDs jedes Benutzers verwaltet. Wenn ich die Benachrichtigung sende, werde ich einen Eintrag auf die Nachrichtendaten mit Benutzer-ID, Nachricht etc. setzen, werde ich einen Eintrag in der Tabelle message_status für jedes Benutzergerät.MySQL-Abfrage zum Zählen von Benutzern ungelesene Nachricht
So dass ich jedes Gerät Benachrichtigung Status und Fehler erhalten kann.
message_data
id INT
userid VARCHAR
message VARCHAR
sent_time DATETIME
language TINYINT
message_status
id INT
data_id INT
device_id VARCHAR
device_type TINYINT
sent_time DATETIME
status TINYINT
error_code TINYINT (If there is any error, we will have the error code here)
Ich möchte für jeden Benutzer die ungelesene Benachrichtigung Zahl erhalten. Statusfeld 0 bedeutet, dass die Nachricht für dieses Gerät vom Benutzer noch nicht gelesen wurde. Wenn es 1 ist, haben Benutzer die Nachricht gelesen.
Ein Benutzer kann sich von mehreren Geräten aus anmelden. Wenn der Benutzer die Nachricht in mindestens einem Gerät liest, sollte er als Benachrichtigungsnachricht gelesen werden.
Wenn die Benachrichtigungsmeldung nicht von einem Benutzer in einem Gerät gelesen wird, muss sie als ungelesene Nachricht betrachtet werden.
Wie identifiziert man die Benutzer mit ungelesenen Nachrichtenzählern? Irgendeine Idee dazu?
Sie müssen herausfinden, ob es einen anderen message_status mit Status = 1 gibt, also verwenden Sie entweder einen JOIN oder einen NOT EXISTS mit 'WHERE device_id = UND status = '. –
mroman
@mroman Ich muss die Anzahl der ungelesenen Nachrichten von Benutzer-ID abrufen. Der Benutzer kann viele registrierte Geräte haben. – Muthu
ist 'user_id' eindeutig? – Fabio