Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Сейчас пишу диплом и столкнулся с одним моментом. Я пишу, грубо говоря, социальную сеть и передо мной стала задача написать страничку диалогов (как вконтакте). На странице должен быть список людей, с которыми я переписывался и для каждого - последнее сообщение (не важно, мое к нему или от него ко мне). Помогите пожалуйста с запросом...
Мои таблицы:
users: id, name, surname
massages: id, sender (id юзера), recipient(id юзера), text, date.
Сам старался, но ничего толкового не родил. Вот то, что есть.
Отредактированно Badalbas (26.02.2015 10:27:35)
Неактивен
Попробуйте
SELECT
u.id,u.name,u.surname,m.text,m.date AS date
FROM
users u, massages m
WHERE
(m.sender=:thisUser AND m.recipient=u.id) OR (m.sender=u.id AND m.recipient=:thisUser)
ORDER BY m.date
LIMIT 1;
Неактивен
Это не совсем то, что мне нужно, но спасибо.
Я, видимо, не так выразился. Мне нужна выборка ПОСЛЕДНИХ сообщений из каждого диалога. То есть, если за все время существования моего аккаунта, я общался только с условными Васей и Петей, то в выборке должна быть информация про Васю и последнее сообщение с ним, а так же про Петю и последнее с ним сообщение. Думаю, так понятнее...
Должно вернуть что-то вроде такого:
users.id | users.name | users.surname | massages.text | massages.date
3 | Василий | Пупкин | Последнее сообщение от Васи | Дата последнего сообщения
17 | Петр | Шибкин | Последнее сообщение от Пети| Дата последнего сообщения
И так по каждому диалогу - вернуть информацию по сообщению и по человеку, с которым я переписівался
Отредактированно Badalbas (26.02.2015 15:19:06)
Неактивен
Посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=7311
там решена такая задача.
Неактивен