Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Помогите с запросом


Автор: Ivan. 25.11.2011, 16:23
Есть таблица с инструкциями:
Код

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


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

Автор: newbee 25.11.2011, 16:31
select text from table where ver<=10 group by disp не работает?

Автор: Ivan. 25.11.2011, 16:38
он вернет первые строки, которые были добавлены в таблицу, то есть теоретически минимальные версии, а мне нужно максимальные

Добавлено @ 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:56
на самом деле такую реализацию нельзя использовать, так как разные СУБД могут вернуть разный результат. одна может вернет первую строку в группировке, а другая последнюю. это ни где не стандартизировано

Добавлено через 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

Автор: Akina 25.11.2011, 17:07
http://www.sql.ru/forum/actualthread.aspx?tid=687908

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