現在のユーザーのすべての受信メールと送信メールを 1 つのクエリで取得する必要があるメール テーブルがあります。php が結果をループするとき、送受信された最新のメッセージに基づいて 1 つのメイン ビジュアルを構築し、その最新のメッセージに関連する以前のメッセージ ビジュアルを構築する必要があります (これはページの下にある最新のメッセージの下に表示されます)。 . 私が持っているメールテーブルは次のように設定されています:
私d(auto_incr), from_user(user id number), to_user(user id number),
orig_mess(id number of the first message in conversation),
status(0 for unread, 1 for read)
他のメール受信トレイと同様に、次のように並べ替えられた結果を取得する必要があります。
2) ログインしているユーザーに送信されたメッセージまたはログインしているユーザーから送信されたメッセージ (すべて ID 順) を読み取り、もちろん最新の後の各会話に関連する以前のメッセージを読み取ります。
これが私がこれまでに試したことです:
$result = mysql_query("(SELECT id FROM Mail WHERE Mail.to_user='37' AND
Mail.status='0' ORDER BY Mail.id DESC) UNION (SELECT id FROM Mail WHERE
(Mail.to_user='37' AND Mail.status='1') OR
(Mail.from_user='37') ORDER BY Mail.id DESC)")or die(mysql_error());
クエリを使用して各会話の最新メッセージを取得し、その後、各会話に対して別のクエリを実行して、探している結果を達成しました。この方法の問題点は、ユーザーのメールボックスに 20 件の会話がある場合、それらすべてを表示するために 21 件のクエリが発生することです。これをどのように達成できるか、またはメールシステムを設定するためのより良い方法があるかどうかについての助けをいただければ幸いです。
これを達成するための信頼できる方法はまだ思いつきません。光を当てることができる人はいますか?