0

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 を大きなものに変更する方法について何か考えはありますか?

4

0 に答える 0