Сортировка при использовании JOIN

Verdel

Новичок
Сортировка при использовании JOIN

Так-надо всё,что будет ниже для форума.

Есть таблица fmaintheme для разделов
Есть fslavetheme для тем в разделах-в этой таблице fslavetheme.pid=fmaintheme.id
Есть таблица fmessage в которой соответственно fmessage.pid=fslavetheme.id
В таблице fslavetheme есть поле absdate-дата создания темы,в fmessage absdate-дата вставки сообщения.

Запрос:
select t1.*,count(distinct t2.id) as mes from `fslavetheme` as t1 left join `fmessage` as t2 on t2.pid=t1.id where t1.pid='$id' group by t1.id ORDER BY t2.absdate DESC

Где $id-идентификатор раздела.

Вопрос такой-если мы будем выводить в запросе также и t2.absdate-то есть дату сообщения в теме,то из всех сообщений выбирается непонятно какое.Нужно чтобы соединялась так,чтобы в результате запроса было сообщение в теме,у которого absdate максимален.Так как пока всё енто добро сортируется по дате создания темы,а надо по дате последнего сообщения,но с моим запросом это пока невозможно так как я уже сказал-выбирается непонятно какое сообщения из темы при соединении таблиц.
 

alpine

Новичок
Verdel
Cтруктура таблицы топиков в форуме vBulletin 3.5.1 для размышлений:
[sql]
CREATE TABLE `bv3_thread` (
`threadid` int(10) unsigned NOT NULL auto_increment,
`title` varchar(250) NOT NULL default '',
`firstpostid` int(10) unsigned NOT NULL default '0',
`lastpost` int(10) unsigned NOT NULL default '0',
`forumid` smallint(5) unsigned NOT NULL default '0',
`pollid` int(10) unsigned NOT NULL default '0',
`open` smallint(6) NOT NULL default '0',
`replycount` int(10) unsigned NOT NULL default '0',
`hiddencount` int(10) unsigned NOT NULL default '0',
`postusername` varchar(100) NOT NULL default '',
`postuserid` int(10) unsigned NOT NULL default '0',
`lastposter` varchar(50) NOT NULL default '',
`dateline` int(10) unsigned NOT NULL default '0',
`views` int(10) unsigned NOT NULL default '0',
`iconid` smallint(5) unsigned NOT NULL default '0',
`notes` varchar(250) NOT NULL default '',
`visible` smallint(6) NOT NULL default '0',
`sticky` smallint(6) NOT NULL default '0',
`votenum` smallint(5) unsigned NOT NULL default '0',
`votetotal` smallint(5) unsigned NOT NULL default '0',
`attach` smallint(5) unsigned NOT NULL default '0',
`similar` varchar(55) NOT NULL default '',
PRIMARY KEY (`threadid`),
KEY `postuserid` (`postuserid`),
KEY `pollid` (`pollid`),
KEY `forumid` (`forumid`,`visible`,`sticky`,`lastpost`),
KEY `lastpost` (`lastpost`,`forumid`),
KEY `dateline` (`dateline`)
)
[/sql]

-~{}~ 17.12.05 00:22:

где lastpost - дата последнего поста.

-~{}~ 17.12.05 00:24:

а replycount - кол-во постовв топике.
 

Verdel

Новичок
Понимаю-зато моя структура облегчает,а вернее уменьшает кол-во процедур при удалении,перенесении сообщения или темы в целом.Я понимаю,что кого то это не устроет,но скорость работы нормальная,так что требуется просто решить вопрос-как сортировать сообщения,чтобы при соединении таблиц в запросе вместе с таблицей выходило последнее в ней сообщение,а не непонятно какое.
 
Сверху