|
|
|
| Аналогично тому, как на этом форуме указываются время и автор последнего ответа в теме, нужно выбрать последние записи из связанной таблицы:
CREATE TABLE `s_title` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`status` int(1) unsigned NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`name` varchar(255) NOT NULL,
`autor` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
CREATE TABLE `s_message` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent` int(10) unsigned NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`text` text NOT NULL,
`autor` varchar(20) NOT NULL,
PRIMARY KEY (`parent`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
И вот такой запрос:
SELECT t.*,UNIX_TIMESTAMP(m.`date`) AS date,m.autor AS m_autor
FROM s_title t
LEFT JOIN s_message m ON m.parent=t.id
GROUP BY t.id
Возращает первую строку из связанной таблицы s_message (где указывается автор и дата начального сообщения), а нужно последнюю, где указывался бы автор и дата последнего ответа на сообщение... | |
|
|
|
|
|
|
|
для: kosta_in_net
(19.01.2012 в 13:49)
| | Сам себе не поможешь - никто тебе не поможет :(
Вот, получилось:
SELECT t . * , UNIX_TIMESTAMP( m.date ) AS m_date, m.autor AS m_autor
FROM s_title t
LEFT JOIN (
SELECT *
FROM s_message
ORDER BY date DESC
)m ON m.parent = t.id
GROUP BY t.id | |
|
|
|