У меня есть PHP-скрипт, который извлекает сообщения из базы данных, а затем отображает их в стиле почтового ящика, по одной строке для каждого сообщения. Каждое сообщение является частью разговора между двумя пользователями. В настоящее время проблема заключается в том, что он возвращает 1 новое сообщение на выходе для каждого сообщения в разговоре.mySQL select - как получить только 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 запрос возвращает только вернуть ONE (1) результат за topic_id (как может быть несколько topic_id с тем же номером) и в сочетании с только что LATEST (наибольшее число) сообщения message_id.
Так в основном, если есть:
================
topic_id | message_id
================
15 10
15 11
15 12
19 02
19 03
19 04
Я хочу только бы MySql вернуться 15/12 и 19/04. Как я могу сделать это с помощью вышеупомянутого запроса на выбор mySQL?
Большое спасибо :)
У вас есть w.name и r.name, но здесь я не вижу таблицы w или r. Подумайте, что лучше вы публикуете пример SQL-запроса. –
Извините, я удалил эту часть и забыл ее выше. Просто обновил его. Должно быть правильно сейчас :) – user2643870
Являются ли 'topic_id' и' message_id' в той же таблице или находятся в отдельных таблицах, участвующих в JOIN? – Sammitch