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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FireBird 2.0 сделать сортировку после того, как отработает select 
:(
    Опции темы
Delphist
Дата 2.8.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


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

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



Скажите, пожалуйста, как в select-запросе (Firebird 2.0) сделать сортировку по-какому либо полю, после того, как отработает select.
Т.е. 
Код

select rd.raw_id, rd.raw_group_id,
iif(rd.raw_id > 0, 2, rg.sequence_id) sequence_id,
rd.raw_name
from recipes r
 join rcp_contents rc on rc.rcp_id=r.rcp_id
 join raw_dict rd on rd.raw_id=rc.raw_id
 left join raw_groups rg on rg.raw_group_id=rd.raw_group_id
where r.rcp_id=943
order by rg.sequence_id

В данном sql-запросе сортировка выполнится след. образом:
упорядачатся sequence_id именно по тем значениям, которые есть в таблице raw_groups (
т.е. iif(rd.raw_id > 0, 2, rg.sequence_id) sequence_id эта строка не учитывается) в связи с этим нарушится положение rc.raw_id т.е. они уже будут выводится не так как их ввел ранее пользователь

Вопрос такой как заставит sql-запрос сначала выполнится, а потом уже сделать сортировку. Вроде как новая функция PLAN это умеет но я не понял как ей пользоваться.

Это сообщение отредактировал(а) Delphist - 2.8.2007, 11:45


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
jsa
Дата 2.8.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

select * from (
 select rd.raw_id, rd.raw_group_id,
iif(rd.raw_id > 0, 2, rg.sequence_id) sequence_id,
rd.raw_name
from recipes r
 join rcp_contents rc on rc.rcp_id=r.rcp_id
 join raw_dict rd on rd.raw_id=rc.raw_id
 left join raw_groups rg on rg.raw_group_id=rd.raw_group_id
where r.rcp_id=943
)
order by <field_name>

попробуй


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Delphist
Дата 2.8.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


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

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



То же самое. Вообщев выход нашел теперь в order by стоит так:
order by sequence_id, rc.row_id


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
SaschaL
Дата 13.9.2007, 09:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 880
Регистрация: 13.12.2006
Где: Челябинская обл г .Нязепетровcк

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



Доброго времени суток!
Попробуй метод 
Цитата

Order by <Name>

 причем в качестве имени столца можно использовать несколько имен столбцов, разделенных при этом знанаком "," 
Например:
quote]
Order by id, Name
[/quote]
При этом при выполнении сортировки первая сортировка будет выполнена по полю id затем в рамках первой сортировки производится вторая сортировка по полю name
Надесь что все понятно! Удачи
PM MAIL ICQ   Вверх
Akella
Дата 18.9.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



а если сделать представление или хранимку, а из них уже выбирать и эту выборку сортировать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

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


 




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


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

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