データベースからメッセージを取得し、メッセージごとに 1 行の受信トレイ スタイルで表示する PHP スクリプトがあります。各メッセージは、2 人のユーザー間の会話の一部です。現時点での問題は、会話内のメッセージごとに 1 つの新しいメッセージが出力に返されることです。
それが理にかなっている場合は?クエリのコードは次のとおりです。
$sql_select_messages = $db->query( ... );
引数は次のクエリ文字列です。
SELECT m.admin_message, a.name, u.username AS sender_username,
m.* FROM " . DB_PREFIX . "messaging m
LEFT JOIN " . DB_PREFIX . "items a ON a.items_id=m.items_id
LEFT JOIN " . DB_PREFIX . "users u ON u.user_id=m.sender_id
WHERE m.receiver_id='" . $session->value('user_id') . "' AND m.receiver_deleted=0" .
(($page == 'summary') ? " AND m.is_read=0" : '') . "
ORDER BY " . $order_field . " " . $order_type . " LIMIT " . $start . ", " . $limit
の部分:
m.* FROM " . DB_PREFIX . "messaging m
次のような列を含む mySQL 行からデータを選択します
topic_id
と
message_id
私がやろうとしているのは、上記の mySQL クエリが topic_id ごとに 1 つの結果のみを返し (同じ番号の topic_id が複数ある可能性があるため)、それと組み合わせて message_id の LATEST (最大番号) のみを返すようにすることです。
したがって、基本的に次の場合:
================
topic_id | message_id
================
15 10
15 11
15 12
19 02
19 03
19 04
mySQL が 15/12 と 19/04 を返すようにしたいだけです。上記の mySQL 選択クエリでそれを行うにはどうすればよいですか?
どうもありがとうございました :)