Не удается получить последний элемент из таблицы с группой mysql с помощью

Я пытаюсь сделать запрос mysql, который получает последний элемент в предложении group by. Однако, когда я группирую, это дает мне первую запись. Я пробовал много объединений и много поисков, но не могу найти правильный способ сделать это.

Моя база данных устроена так:

Сообщения:

  • идентификатор_сообщения *
  • thread_id
  • ID пользователя
  • сообщение
  • создано в

пользователи:

  • ID пользователя*
  • имя

потоки:

  • thread_id*
  • имя

пользовательские темы:

  • id*
  • ID пользователя
  • thread_id

Запрос, который я пытаюсь сделать, должен быть предоставлен user_id:

  • threads.thread_id
  • пользователи.имя
  • сообщения.сообщение
  • messages.created_at

Загвоздка здесь в том, что для users.name мне нужно не предоставленное имя пользователя, а другое имя пользователя, которое есть в потоке. Мой текущий удар по нему прямо сейчас выглядит так:

select t.thread_id as thread, t.name as name, messages.message as message,        max(messages.created_at) as date  
from (SELECT threads.thread_id, nt.name
      FROM threads,messages,
            (SELECT users.name as name, usersthreads.thread_id as threadID
            from users,usersthreads
            where users.user_id=usersthreads.user_id
            and users.user_id!='$userID') as nt
      WHERE threads.thread_id=messages.thread_id
      and nt.threadID=threads.thread_id
      AND messages.user_id=$userID
      GROUP BY messages.thread_id) as t
inner join messages
on t.thread_id = messages.thread_id 
group by t.thread_id
order by date DESC

И проблема с этим запросом заключается в том, что он возвращает то, что мне нужно, но сообщение, которое возвращается для каждого потока, является первым сообщением потока, а не последним ("самым последним") сообщением. Спасибо.


person Michael Gulik    schedule 07.05.2016    source источник
comment
Возможный дубликат Получить последние записи с помощью GROUP BY   -  person Dan H    schedule 14.05.2016