私はです。複数のデバイスに通知メッセージを送信しています。 ユーザーは複数のデバイスからログインできます。私は、各ユーザーのデバイスIDを維持する別のテーブルを持っています。 私はmessage_dataとuserid、messageなどを入力します。、各ユーザデバイスのmessage_statusテーブルにエントリを入れます。ユーザの未読メッセージ数をカウントするMySQLクエリ
私は各デバイスをメンテナンスできるように通知のステータスはで、エラーが発生しました。
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)
各ユーザーの未読通知メッセージ数を取得したいと考えています。ステータスフィールド0は、このデバイスのメッセージがまだユーザーによって読み取られていないことを示します。 1の場合、ユーザーはメッセージを読んでいます。
ユーザーは、複数のデバイスからログインできます。ユーザーが少なくとも1つのデバイスでメッセージを読む場合は、通知メッセージが読み込まれると考慮する必要があります。
通知メッセージがどのデバイスでもユーザーによって読み取られない場合は、未読メッセージとみなす必要があります。
未読通知メッセージ数のユーザーを特定するにはどうすればよいですか?これに関するアイデアは? status
フィールドが0
と1
以外の複数の状態を持っているなら、あなたはそれを行うことができます
status = 1の別のmessage_statusがあるかどうかを調べる必要があります。そのため、 'WHERE device_id = AND status = 'でJOINまたはNOT EXISTSを使用してください。 –
mroman
@mroman私は未読メッセージ数をuseridで取得する必要があります。ユーザーは多数の登録済みデバイスを持つことができます。 – Muthu
は一意の 'user_id'ですか? – Fabio