Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Всем привет! Прошу помощи разобраться в том как сделать следующее.
Есть таблица с сообщениями:
message_id message_user_id message_sender_id message_text message_date
3 72589 72590 Hi Elfet! Its test123! 2011-07-22 15:35:36
5 72590 72589 Hi! I am Elfet; 2011-07-22 19:15:57
6 72589 72590 Ou. Realy? 2011-07-22 19:16:44
7 72590 72589 YES! 2011-07-22 19:22:23
9 72590 72589 ПРИВЕТ! ЭТО ELFET! 2011-07-25 12:23:14
10 72589 72591 Hi from Explorer!!!! 2011-07-25 13:12:43
Нужно сгруппировать сообщения по диалогам и вывести последнее сообщение.
9 72590 72589 ПРИВЕТ! ЭТО ELFET! 2011-07-25 12:23:14
10 72589 72591 Hi from Explorer!!!! 2011-07-25 13:12:43
Я пробую делать так:
SELECT * FROM `messages` WHERE `message_user_id`=72589 GROUP BY message_sender_id, message_user_id ORDER BY message_date DESC
Однако получаю вместо этого
10 72589 72591 Hi from Explorer!!!! 2011-07-25 13:12:43
3 72589 72590 Hi Elfet! Its test123! 2011-07-22 15:35:36
То есть первое сообщение из группы.
Как получить последнее? Заранее спасибо!
Комментарий модератора.
См Вывод последней записи при группировке. В этой статье приведено 5 вариантов решения в один запрос.
Неактивен
При группировке нельзя выбирать поля, по которым не производится группировка или они не имеют группирующей функции.
Такие запросы запрещены синтаксисом SQL, но MySQL их выполняет выбирая произвольную строку.
Сначала нужно выбрать message_sender_id, message_user_id, max(message_date), а затем по этим значениям выбирают остальные поля.
Неактивен
Страниц: 1