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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом 
:(
    Опции темы
Ivan.
Дата 25.11.2011, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть таблица с инструкциями:
Код

CREATE TABLE `disp` (
  `id` int(4) unsigned NOT NULL auto_increment,
  `disp` varchar(30) character set ascii collate ascii_bin NOT NULL default '',
  `ver` smallint(2) unsigned NOT NULL,
  `text` text collate utf8_bin NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `disp` (`disp`),
  KEY `ver` (`ver`)
)

нужно выгрузить по 1 строке для каждой инструкции максимальной версии не выше 10 версии
Код
SELECT `text` FROM `disp` WHERE (`disp` = 'aaa' OR `disp` = 'bbb' OR `disp` = 'ccc') AND `ver` <= 10


Заранее спасибо


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
newbee
Дата 25.11.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



select text from table where ver<=10 group by disp не работает?


--------------------
You're face to face
With man who sold the world
PM   Вверх
Ivan.
Дата 25.11.2011, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



он вернет первые строки, которые были добавлены в таблицу, то есть теоретически минимальные версии, а мне нужно максимальные

Добавлено @ 16:43
можно написать так:
Код

SELECT text FROM (SELECT disp, text FROM table WHERE ver <= 10 ORDER BY ver DESC) AS t GROUP BY disp

тогда он отсортирует таблицу по убыванию и первыми строками будут лежать максимальные версии, а потом уже сгруппирует. но это как то не правильно. должен быть более правильный способ решения задачи

Это сообщение отредактировал(а) Ivan. - 25.11.2011, 16:44


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
Ivan.
Дата 25.11.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



на самом деле такую реализацию нельзя использовать, так как разные СУБД могут вернуть разный результат. одна может вернет первую строку в группировке, а другая последнюю. это ни где не стандартизировано

Добавлено через 7 минут и 48 секунд
писать такой вариант вообще извращение:
Код

SELECT text FROM table WHERE disp = 'aaa' AND ver <= 10 ORDER BY DESC LIMIT 1
union
SELECT text FROM table WHERE disp = 'bbb' AND ver <= 10 ORDER BY DESC LIMIT 1
union
SELECT text FROM table WHERE disp = 'ccc' AND ver <= 10 ORDER BY DESC LIMIT 1



--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
Akina
Дата 25.11.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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


 




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


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

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