Я создаю систему обмена сообщениями, аналогичную facebook.Система обмена сообщениями mysql, список сообщений
У меня есть две таблицы:
messages =>
m_id (message id)
t_id (thread id)
author_id (id of user that wrote the message)
text (Text for the message)
date (date)
time (time)
thread_recipients =>
t_id (thread_id)
user_id (id of the user that will belong to this thread)
read (Flag to tell if there are any unread messages)
Так что я в принципе хочу, чтобы получить список потоков (разговоров), что пользователь является частью. В этом списке я хочу выбрать текст, дату и время последнего сообщения, которое было опубликовано в потоке.
Я сделал sqlfiddle: http://sqlfiddle.com/#!2/a3d9b/2
Поэтому в основном я хочу, этот запрос возвращает только последнюю строку, так как она имеет самый высокий идентификатор сообщения.
Если это можно сделать без подзапроса, это было бы здорово. Если нет, то я буду просто жить с этим (:
EDIT:. я понял, как сделать это с подзапрос Но мой большой проблемой здесь является производительность, я бы очень хотел сделать. . это еще один способ, если это возможно
SELECT r.t_id, m.author_id, left(m.text, 50)
FROM
messages m,
thread_recipients r
WHERE
r.user_id = 16 and
r.t_id = m.t_id and
m.m_id = (SELECT MAX(mm.m_id) FROM messages mm WHERE mm.t_id = m.t_id)
Ну, я знаю о max, но моя проблема заключается в том, как его реализовать, желательно без подзапроса. – jah