MySQL を使用するインスタント メッセージング システムに取り組んでいます。現在のテーブル構造は次のようになります。
id
from_user_id (FK)
to_user_id (FK)
text
date
new
私はそれでいくつかの問題があります。
まず、私はこれを行います:
SELECT * FROM table WHERE to_user_id = (my_id) ORDER BY date desc GROUP BY from_user_id
これにより、メッセージを送信したすべてのユーザーが返されます。
次に、ID を配列に保存します。
第三に、私はこれを行います:
SELECT * FROM table WHERE from_user_id = (my_id) AND to_user_id NOT IN (array_of_ids) ORDER BY date desc GROUP BY to_user_id
これにより、メッセージを送信したが送信していないすべてのユーザーが返されます。
これはうまく機能しています。
ユーザーが送信するすべてのメッセージには、「new」フィールドが true に設定されています。これは、他のユーザー (メッセージの受信者) に新しいメッセージが届いたことを通知したいためです。
問題は、送信者にも新しいメッセージとして表示されることです。
それを修正する方法、またはこれら 2 つの SQL を大きなものに変更する方法について何か考えはありますか?