Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка в GROUP BY 
:(
    Опции темы
spamoney
Дата 14.8.2010, 04:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.7.2008

Репутация: нет
Всего: нет



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

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
На всякий случай дамп таблиц: SQL.txt
PM MAIL   Вверх
Wolf1994
Дата 14.8.2010, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 2
Всего: 29



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

Код

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

PM MAIL WWW   Вверх
spamoney
Дата 14.8.2010, 07:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.7.2008

Репутация: нет
Всего: нет



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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.