ここで、以前の質問を拡張します。
プライベート チャット システム MYSQL クエリ ORDERBY および GROUPBY
さらに、users という名前のテーブルをもう 1 つ作成しました。そこからユーザー情報を取得します。
メッセージ テーブル
  message_id|sender_id||receiver_id|message_text|   created_time
    1         101          102       Message A    2012-06-07 08:07:18
    2         101          102       Message B    2012-06-07 08:10:20
    3         103          102       Message C    2012-06-07 08:12:43
ユーザー テーブル:
 id  | name
 101   bob
 102   jack
 103   mark
最終的に、次の結果を得ることができます。
      name|message_text |  created_time
      mark   message C    2012-06-07 08:12:43
      bob    message B    2012-06-07 08:10:20
このクエリを使用すると、次のようになります。
SELECT * FROM messages,users
WHERE messages.receiver_id = 102
AND messages.sender_id=users.id
AND messages.created_time IN
(SELECT MAX(created_time)
FROM messages
GROUP BY sender_id)
ORDER BY messages.created_time DESC
今、私が結果に欲しいのは
jack(id:102) が mark(id:103) に返信した場合、どうすればこの出力を取得できますか:
      name|message_text |  created_time
      mark   message D    2012-06-07 08:12:48
      bob    message B    2012-06-07 08:10:20
注:ここにある「メッセージ D」とタイムスタンプは、ジャックがマークに返信したものです。
ここで、message_text フィールドには、mark と jack の間の最後のメッセージが表示されます。created_time フィールドにはメッセージの作成時刻が表示され、name フィールドには、jack がメッセージを送受信している相手の名前が表示されます。
テーブルを変更/分割する必要があると考えていますが、このタスクを実行する方法とクエリがわかりません。