Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Derby, order by в подзапросах, как обойти странное ограничение Derby? 
V
    Опции темы
Maksym
  Дата 27.5.2008, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Derby не позволяет ограничить количество выбираемых SELECT'ом записей с помощью LIMIT и OFFSET, как это делают другие базы (мотивируется это тем, что этих ключевых слов нет в стандарте).
Взамен предлагается делать так:
Код

SELECT * FROM  
( SELECT ROW_NUMBER() OVER() AS rownum, my_id, my_name 
FROM my_table)  
AS tmp WHERE rownum > 10 AND rownum <= 15

и это работает, возвращается 5 записей из моего подзапроса. Хорошо..
Но вот я захотел отсортировать подзапрос по полю my_name:
Код

SELECT * FROM  
( SELECT ROW_NUMBER() OVER() AS rownum, my_id, my_name 
FROM my_table
ORDER BY my_name ASC)  
AS tmp WHERE rownum > 10 AND rownum <= 15

На это Derby возвращает ошибку.. мол неожиданный ORDER встретился..
В документации на это пишут:
Цитата

Derby does not currently support ORDER BY in subqueries, so there is currently no way to guarantee the order of rows in the SELECT subquery. An optimizer override can be used to force the optimizer to use an index ordered on the desired column(s) if ordering is a firm requirement.


Здорово..   smile  Неужели такая в общем-то разивтая и не молодая СУБД не умеет делать такую элементарную вещь! Невозможно сделать постраничный просмотр отсортированной таблицы..!  smile 

Может я что-то пропустил.. недопонял..? есть идеи..?

ЗЫ. Попытки что-нибудь подкрутить с optimizer'ом, о котром они пишут в цитате выше, ничего не дали. Да и бред это -- лезть в  optimizer, чтобы сделать элементарнейший SELECT!

Нужна помощь...  smile 

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


Leprechaun Software Developer
****


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

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



Вообще-то секция order by, должна идти после where.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Maksym
Дата 27.5.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



LSD
В смысле? Я хочу выбрать все данные из таблицы, без условий.
PM MAIL   Вверх
LSD
Дата 27.5.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Это я ошибся, неправильно прочитал твой запрос.

А вьюхи в дерби есть?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Maksym
Дата 27.5.2008, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



LSD
Есть. Попытка создать View сдедующим запросом:
Код

CREATE VIEW new_view (my_id, my_name) as 
SELECT my_id, my_name 
FROM my_table
ORDER BY my_name ASC

Выдает ту же ошибку что и раньше:
Код

Encountered "order" at line 4, column 1.


Бред какой-то. Этой базой наверняка же пользовались в реальных проектах...   smile 

Может я что-то в синтаксисе тупо лажаю.. ? Но не похоже..
PM MAIL   Вверх
Maksym
Дата 27.5.2008, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



У людей те же проблемы, и они тоже не могут найти вменяемого решения....

Добавлено @ 23:58
Derby неприятно поразил меня...
Ищу уже не нормальное  решение, а хотя бы вменяемый воркэраунд..

Это сообщение отредактировал(а) Maksym - 28.5.2008, 00:04
PM MAIL   Вверх
Maksym
Дата 28.5.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Просьба к модераторам:

Перенесите, пожалуйста, тему в раздел "Java: Общие вопросы". Насколько я знаю, это раздел посещает больше людей хорошо знакомых с Derby (как никак pure java database).

Добавлено через 8 минут и 40 секунд
LSD, спасибо..
PM MAIL   Вверх
Maksym
Дата 28.5.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Решение, с описанием всех подводных камней. Кривовато как по мне. Еще один аргумент использовать ORM и абстрагироваться от заморочек создателей СУБД.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




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


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

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