[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как выбрать сообщения
N0ob
Я делаю страницу, где выводятся диалоги пользователя. То есть выводиться ссылка не диолог в виде последнего сообщения из этого диалога. Короче как в ВК. Так вот, диологи у меня хранятся в виде обычных сообщений, где указывается кому и от кого сообщение. Так вот, как мне вытащить последние сообщение из каждого из диологов. По сути надо вытащить последние сообщения, которые я кому либо писал. Как это сделать SQL запросом?
N0ob
Ребятки, але, неужели никто не знает?
inpost
N0ob
У меня задействованы 2 таблицы.
1) Диалоги (в которых записываю последнее сообщение, дату, кто-кому).
2) Сообщения (тут уже все сообщения).
Обращение ко второй таблице идёт только тогда, когда человек раскрывает диалог с конкретным пользователем, чтобы почитать всю переписку.

_________________________________

Если не хочешь так, то можешь сделать через группировку, тогда получишь ID всех собеседников, а дальше доставать для каждого из них по 1 последнему в цикле или через подзапрос. Кажется ужасным, увы, да smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
N0ob
inpost спасибо. Придется делать еще одну таблицу)))
kaww
Последние сообщения из диалогов:
select t0.*
from messages t0
inner join (
select user_id, max(date) as MaxDate
from messages
group by user_id
) t1 on t0.user_id = t1.user_id and t0.date = t1.MaxDate
N0ob
kaww я не очень силен в "запросах в теле запроса"! Так что мне не очень понятен алгоритм запроса.
inpost так для, допустим, двух пользователей, тоже создавать диалог в таблице?
inpost
N0ob
Первое сообщение написал - создал диалог.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
kjdgh
сортировка по дате как вариант. правда незнаю как это будет грузить базу...
пример
SELECT * FROM messages WHERE user_id=1 ORDER_BY date DESC LIMIT 1

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



N0ob
Цитата
1) Диалоги (в которых записываю последнее сообщение, дату, кто-кому).

А это удобно, записывать в таблицах с диалогами, id последнего сообщения?
N0ob
?????????????????????
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.