ORDER BY + GROUP BY или как отсортировать результирующие данные

Reverent

Новичок
ORDER BY + GROUP BY или как отсортировать результирующие данные

Добрый день уважаемые форумчани.

В данный момент пишу форум, и столкнулся с такой проблемой. У меня есть таблица, которая содержит все темы, соответственно есть таблица, которая содержит все сообщения. Мне нужно вывести все темы и последние сообщение к ним.

Примерно таблицы выглядят так.

Для тем:
CREATE TABLE forumThemes
(
id_forumThemes MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
id_users MEDIUMINT(8) UNSIGNED NOT NULL,

header VARCHAR(100) NOT NULL,
shows MEDIUMINT(8) UNSIGNED,

PRIMARY KEY(id_forumThemes),
INDEX(id_users)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Для сообщений
CREATE TABLE forumMessages
(
id_forumMessages MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
id_forumThemes MEDIUMINT(8) UNSIGNED NOT NULL,
id_users MEDIUMINT(8) UNSIGNED NOT NULL,

message TEXT(5000) NOT NULL,
dateAndTimeAdd DATETIME NOT NULL,

picture MEDIUMBLOB,
picture_format VARCHAR(255),

PRIMARY KEY(id_forumMessages),
INDEX(id_forumThemes),
INDEX(id_users)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Я пишу такую конструкцию:
SELECT forumThemes.header, forumMessages.id_users, forumMessages.dateAndTimeAdd FROM forumThemes, forumMessages WHERE forumThemes.id_forumThemes = forumMessages.id_forumThemes GROUP BY forumMessages.id_forumThemes ORDER BY forumMessages.dateAndTimeAdd DESC;

Но он мне как назло выдает дату не последние сообщение, и не id пользователя который написал последние сообщение, а просто какие-то левые данные. Чувствую возникает сложность в сортировке скомпонованных данных конструкцией GROUP BY. Что мне делать, как по другому написать запрос, что бы получить дату и id пользователя написавшего последние сообщение?
 
Автор оригинала: zerkms
добавь в таблу к треду last_message_id
Можно конечно пойти и таким путем, но я думаю в MySQL должны быть средства что бы реализовать это и без таких "изяществ".
 
Reverent
как раз "изящество" - это то, чем ты занимаешься. делай как сказали.
 
Тебе уже сказали как нужно делать
Другие способы есть, но для данной ситуации нужно делать так

хочется написать тормозной нечитабельный запрос - нате http://jan.kneschke.de/projects/mysql/groupwise-max/
просвещайтесь
 
Сверху