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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор записей с максимальным элементами, Как это сделать за один запрос? 
:(
    Опции темы
mzalutski
Дата 22.12.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравия желаю!
Имеется, допустим, такая таблица `sample`. Где необходимо выбрать подсвеченные строки
+----+---------+---------------------+
| id | item_id | date |
+----+---------+---------------------+
| 1 | 1 | 2005-00-00 00:00:00 |
| 2 | 1 | 2006-00-00 00:00:00 |
| 3 | 1 | 2007-00-00 00:00:00 |
| 4 | 1 | 2008-00-00 00:00:00 |
| 5 | 2 | 2005-00-00 00:00:00 |
| 6 | 2 | 2006-00-00 00:00:00 |
| 7 | 2 | 2007-00-00 00:00:00 |
| 8 | 2 | 2008-00-00 00:00:00 |
| 9 | 3 | 2005-00-00 00:00:00 |
| 10 | 3 | 2006-00-00 00:00:00 |
| 11 | 3 | 2007-00-00 00:00:00 |
| 12 | 3 | 2008-00-00 00:00:00 |
| 13 | 4 | 2005-00-00 00:00:00 |
| 14 | 4 | 2006-00-00 00:00:00 |
| 15 | 4 | 2007-00-00 00:00:00 |
| 16 | 4 | 2008-00-00 00:00:00 |
| 17 | 5 | 2005-00-00 00:00:00 |
| 18 | 5 | 2006-00-00 00:00:00 |
| 19 | 5 | 2007-00-00 00:00:00 |
| 20 | 5 | 2008-00-00 00:00:00 |
+----+---------+---------------------+
Запрос типа
Код

SELECT MAX(`date`), id, item_id FROM `sample`GROUP BY `item_id`

приводит к выборке максимального элемента группы, НО с id, item_id НЕ соответствующими этому максимальному элементу. Как можно это решить за один запрос? Есть одна идея - зацепиться за id, т.е. в вышеприведенном запросе добавить условие выбора максимального id (в приделах данной группы). Но зависить от id как-то не хочется. 
Кто знает?


PM MAIL ICQ   Вверх
Rodman
Дата 22.12.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Код

    SELECT MAX(`date`), id, item_id FROM `sample`GROUP BY `item_id`ORDER BY 'ID'

PM MAIL WWW Skype GTalk YIM MSN   Вверх
muzer
Дата 22.12.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Rodman, фигню сказали smile

mzalutski, 

базовый запрос такой:
Код

SELECT date, id, item_id FROM sample WHERE date=(SELECT MAX(date) FROM sample)

либо такой
Код

SELECT s.date, id, item_id FROM sample s INNER JOIN (SELECT max(date) AS date FROM sample) tmp USING(date)


а дальше в зависимости от задачи: добавлять или нет группировку, сортировку, усложнять ли второй пример или нет вытаскиванием максимальных записей для каждой отдельной группы и т.д.
PM WWW   Вверх
mzalutski
Дата 25.12.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо muzer!
То что надо smile smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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