Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Сортировка в GROUP BY


Автор: spamoney 14.8.2010, 04:57
Здравствуйте, есть таблица с следующими полями:

id cat date

хочу вывести из каждой категории по одной последней записи, делаю такой запрос:

Код
SELECT `id`,`cat`,`date` FROM `table_test` GROUP BY `cat` ORDER BY `date` DESC


Но почему то выодит не так как нужно, выводит по одной записи, но они не последние...

Вот скриншот того как нужно вывести (выделено оранжевым):

user posted image

А вот скриншот того как выводит мой sql запрос (неправильно):

user posted image

Помогите, пожалуйста, составить правильный SQL запрос..

P.S
На всякий случай дамп таблиц: http://dl.dropbox.com/u/6655338/sql.txt

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

Код

SELECT `id`,`cat`,`date` FROM `table_test` GROUP BY `cat` ORDER BY `id` DESC

Автор: spamoney 14.8.2010, 07:26
Wolf1994, не будет работать такой запрос как нужно, он идентичен моему первому запросу:

Код
SELECT `id`,`cat`,`date` FROM `table_test` GROUP BY `cat` ORDER BY `date` DESC


Уже, вроде решил проблему, нужно использовать запрос:

Код
SELECT * FROM (SELECT * FROM `table_test` ORDER BY `date` DESC) AS my_table_tmp GROUP BY `cat` ORDER BY `date` DESC


либо:

Код
SELECT SUBSTR(MAX(CONCAT(date,id)),20) id, MAX(CONCAT(date)) date, SUBSTR(MAX(CONCAT(date,cat)),20) cat FROM `table_test` GROUP BY cat ORDER BY `date` DESC

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)