私は受信ボックスシステムを作成しました。サインインしたユーザーは、他のサインインしたユーザーにメッセージを送信できます。データベースのusermessageテーブルには、useridと2. messageidという2つのフィールドがあります。以下は、この表からの抜粋です。MysqlとPHPの受信トレイの更新
userid | messageid
12 | 1
13 | 1
14 | 2
15 | 2
12 | 3
15 | 3
12 | 4
14 | 4
上記の状況では、ユーザー '12'がユーザー '13'にメッセージを送信します。メッセージID「1」をテーブルの一番下に移動して、ユーザー「12」または「13」が自分のメールボックスをチェックしているときに、メッセージID「1」を最近の会話として受信トレイの上部に表示する必要があります。これまで私はmessageid '1'を削除し、各ユーザーIDの新しいクエリとして挿入することでこれを達成できました。これは私のコードです:
DELETE FROM usermessage WHERE userid = '12' and messageid = '1';
INSERT INTO usermessage SET userid = '12', messageid = '1';
DELETE FROM usermessage WHERE userid = '13' and messageid = '1';
INSERT INTO usermessage SET userid = '13', messageid = '1';
これは1つのクエリで可能ですか?これまでのところ、私は問題に関連したスタックフローで明確な答えを見つけることができませんでした。
OMG。データの正規化と適切な相対DB設計について聞いたことがありますか? – heximal
これは、(UP UPDATE CURRENT_TIMESTAMPのようなものを使用して)usermessageテーブルのタイムスタンプフィールドと受信ボックスを表示するためのセレクタでより賢明なORDER BYを使用する方がずっと良いでしょう。 – cmbuckley
は新しい行を作成するだけで12に送信してはいけません。メッセージIDをリサイクルしないでください。 –