Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL группировка в GROUP BY 
V
    Опции темы
SIMarOK
Дата 19.3.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте.
Есть необходимость в выводе последнего элемента в группе, а не первого как это делает мускул.
тип запроса:
SELECT * FROM table WHERE <arguments> GROUP BY id

В таблице несколько записей с одним id, и мускул всегда выводит первую из них...можно ли както выввести последнюю?

Буду благодарен за подсказку

Это сообщение отредактировал(а) SIMarOK - 19.3.2009, 17:11
PM MAIL   Вверх
IZ@TOP
Дата 19.3.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



Добавить оператор сортировки ORDER BY по полю id по убыванию (DESC)?

Код

SELECT * FROM table WHERE <arguments> GROUP BY id ORDER BY id DESC



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
SIMarOK
Дата 19.3.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Так он ровняет по ID, но нужно чтобы ровнял данные касательно ID.

Полный запрос у меня 
Код

SELECT * FROM table WHERE <arguments> GROUP BY id ORDER BY date DESC


Сейчас он выводит первую запись в группе по id, а нужно чтобы выводил последнюю в группе id.
Т.е. допустим он сгрупировал поля по ИД 1 с данными 1, 2, 3, 4, 5. В итоге он выводит 1(первую строчку которая попалась), а нужно чтобы выводил 5(последнюю)

Это сообщение отредактировал(а) SIMarOK - 19.3.2009, 17:26
PM MAIL   Вверх
skyboy
Дата 19.3.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



нет.
более того, запрос
Код

SELECT * 
FROM table 
WHERE <arguments> 
GROUP BY id 
ORDER BY id DESC

неверен по своей сути. и mysql никак не обязан выдавать "первое значение для группы". в будущем такой запрос может выдавать для полей, для которых группировка не указана, второе или десятое значение. будет лучше всем, если ты не будешь использовать подобные запросы.
для твоей же задачи есть два решения: написаться агрегирующую UDF или решать этот вопрос на стороне клиента СУБД(средствами того же PHP).

M
skyboy
Вопрос не имеет отношения к "РНР". Тема перемещена.

PM MAIL   Вверх
SIMarOK
Дата 19.3.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Разобрался

Код


SELECT * 
FROM (
SELECT * 
FROM table 
WHERE <arguments> 
ORDER BY id DESC
) s
GROUP BY id 


Спасибо IZ@TOP и skyboy за попытку помочь

Это сообщение отредактировал(а) SIMarOK - 20.3.2009, 04:08
PM MAIL   Вверх
IZ@TOP
Дата 20.3.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



Цитата(skyboy @  19.3.2009,  19:07 Найти цитируемый пост)
неверен по своей сути.

Начнем с того, что я подумал именно о том, что написал - о сортировке по ID. Так что, все по сути верно.
Другой вопрос в том, что не понял сути вопроса. Но автор уже сам разобрался smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 20.3.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(IZ@TOP @  20.3.2009,  16:02 Найти цитируемый пост)
Так что, все по сути верно.

я не про то, что ты не понял автора, а про вывод полей, которые не входят в список группировки и к которым не применяются агрегирующие функции. Поддерживаю отношение, что подобный кульбит, реализованный в MySQL, есть зло.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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