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 пользователя написавшего последние сообщение?
 

Reverent

Новичок
Автор оригинала: zerkms
добавь в таблу к треду last_message_id
Можно конечно пойти и таким путем, но я думаю в MySQL должны быть средства что бы реализовать это и без таких "изяществ".
 

zerkms

TDD infected
Команда форума
Reverent
как раз "изящество" - это то, чем ты занимаешься. делай как сказали.
 

zerkms

TDD infected
Команда форума
Тебе уже сказали как нужно делать
Другие способы есть, но для данной ситуации нужно делать так

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