Привет, есть таблица ,messages, в которой нужно сделать выборку так, чтобы все строки с одинаковым значением `user_from` были сгруппированы в одну с максимальным значением времени (т.е. самым поздним). Очевидно, запрос PHP: $select = "SELECT `name_from`, `text` FROM `messages` WHERE `user_to` = '$id' GROUP BY `user_from` ORDER BY `date`"; не выдает нужного результата. Подскажите, как правильно реализовать задумку. Спасибо ___ Он группирует, но строку выдает первую из группы
не первую, а в общем случае любую . .ибо порядок не определен Код (Text): SELECT `name_from`, `text`, MAX(date) AS max_date FROM `messages` WHERE `user_to` = '$id' GROUP BY `user_from` ORDER BY `date` потому MAX() применим... гораздо интереснее случай, если вы захотите последнее сообщение из группы показать )))) но и там есть способ
здесь нету того, что мне нужно. Ибо мне нужно получить ТЕКСТ сообщения у которого дата самая поздняя. --- Добавлено --- нет нет нет, это не то, щас я вам скину скриншот того, что пытаюсь исправить
Так и надо говорить... ЧТО конкретно вам нужно... если текст последний говорю же - финт ушами нужен Код (Text): SELECT `name_from`, `text`, MAX(date) AS max_date, SUBSTRING(MAX(CONCAT(date,text)),LENGTH(MAX(date))+1) as last_msg FROM `messages` WHERE `user_to` = '$id' GROUP BY `user_from`
http://g.recordit.co/dTHjmSrOHq.gif --- Добавлено --- Спасибо огромное за решение, всё работает, буду разбирать