Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужно выбрать в связанной таблице последние записи...
 
 автор: kosta_in_net   (19.01.2012 в 13:49)   письмо автору
 
 

Аналогично тому, как на этом форуме указываются время и автор последнего ответа в теме, нужно выбрать последние записи из связанной таблицы:

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 в 15:49)   письмо автору
 
   для: 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования