Здравствуйте. есть 2 таблицы Пользователи - users, Переписки- conver необходимо вывести группирован

SHELA

Новичок
Здравствуйте.
есть 2 таблицы Пользователи - users, Переписки- conver

необходимо вывести группированные переписки по пользователя(не зависимо он отправляли(from) или принимал(to))
К примеру есть id пользователя = 1.
сейчас код такой, выводит всё как надо.
сейчас появилась проблема вывести также последний текст из переписки(text)
но почему-то выводит первый из базы этих пользователей. через order by, не мопогло
как быть?

SELECT c.*, u.* FROM conver c,users u WHERE (
u.user_id = c.from AND c.to = '1' ) OR (
u.user_id = c.to AND c.from = '1')
group by least(`from`,`to`),greatest(`from`,`to`)

Заранее благодарю
 

Sufir

Я не волшебник, я только учусь
Вложенный запрос надо использовать, громоздкая конструкция будет. Возникала подобная задача, я для вывода последних, непрочитанных и не удалённых входящих сообщений делал так:

PHP:
SELECT *
FROM `messages` `m1` 
LEFT JOIN `users` ON ( `m1`.`sender` = `users`.`id` ) 
WHERE `m1`.`sender` != ' . $user->id . '
  AND `m1`.`id` = ( 
    SELECT MAX( `m2`.`id` ) 
    FROM `messages` `m2` 
    WHERE `m1`.`sender` = `m2`.`sender` 
    AND `m2`.`recepient` = ' . $user->id . '
    AND !`m2`.`del_r` )
ORDER BY `m1`.`readed`, `m1`.`id` DESC');
Ну, для исходящих почти то же самое. Вот так выглядит моя таблица.
Возвращаются все необходимые данные о пользователе и последнем сообщении. Попробуйте адаптировать для своих нужд.
 

Вложения

SHELA

Новичок
всё то хорошо,но выводит список всех сообщений.
мне бы их группировать. чтоб не важно от sender или от recepient были. чтоб вывело это одной записью, но именно последнюю.
как Вконтакте. там выводит групированные записи с посл. сообщением.
 

Sufir

Я не волшебник, я только учусь
Ну так составь запрос под себя, я просто на своём примере подсказал в какую сторону глядеть. Хотя сомневаюсь, что в ВКонтакте используют такие тяжеловесные запросы с их highload...
 
Сверху