Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет!
Я новичок в составлении sql-запросов. и у меня не получается сделать следующее.
Дана таблица foo с полями id, автор, сообщение, время:
CREATE TABLE `foo` (
`id` int(10) unsigned NOT NULL auto_increment,
`author` varchar(45) NOT NULL,
`message` text NOT NULL,
`timestamp` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
Мне нужно написать запрос, который выведет два последних опубликованных сообщения (а так же его автора и время публикации), причём сообщения должны быть от разных авторов.
Спасибо.
Неактивен
Что-то типа?:
Неактивен
vaspet написал:
Что-то типа?:
SELECT * FROM foo GROUP BY author ORDER BY TIMESTAMP DESC LIMIT 2;
такой запрос не дает последнюю добавленную запись, если предпоследняя была от того же автора
Неактивен
такой запрос вроде как подходит
Неактивен
Видимо, id возрастает также, как и TIMESTAMP (другими словами, сортировка по id даст тот же порядок записей, как и сортировка по TIMESTAMP).
Тогда (если я ничего напутал) можно так:
Неактивен
nick_core написал:
vaspet написал:
Что-то типа?:
SELECT * FROM foo GROUP BY author ORDER BY TIMESTAMP DESC LIMIT 2;такой запрос не дает последнюю добавленную запись, если предпоследняя была от того же автора
Даст. Тут проблема в другом:
Запрос неверный, потому-что сначала происходит группировка, а потом сортировка.
Вот другое решение (мне кажется более "аккуратное"):
Отредактированно vaspet (26.03.2009 11:35:40)
Неактивен
Спасибо vaspet, LazY!
Очень помогли ваши посты.
Неактивен