Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка в Interbase [D5, IB5.x]


Uran ©   (2004-11-03 12:56:00) 

Есть таблица Interbase, по полю Field нужно организовать сортировку по следующему условию:
Сначала выводятся строки с пустыми значениями, затем значени, содержащие в первой позиции символ «#» , затем "*", "-" и вконце все остальные.
Union не помагает . Подскажите что тут можно придумать.
Заранее благодарен.


Uran   (2004-11-03 13:24:00) [1]

заработал ... действительно тормозил я .. каюсь! :)


Uran   (2004-11-03 13:21:00) [2]

//Наталия
я описал свою выборку с union  не работает .. ты утверждаешь обратное ...
если не трудно , скажи где я ошибаюсь


Johnmen   (2004-11-03 13:18:00) [3]

>Uran

"Не тормози, сникерсни" (c)


Наталия   (2004-11-03 13:18:00) [4]

Uran   (03.11.04 13:16) [13]
а читать ты вообще умеешь? :))


}|{yk   (2004-11-03 13:17:00) [5]

Хотя у тебя IB 5.x, там исходников нет...


Наталия   (2004-11-03 13:17:00) [6]

Reindeer Moss Eater ©   (03.11.04 13:14) [9]
Если UNION - то будет, а если UNION ALL - то не будет :))


Наталия   (2004-11-03 13:16:00) [7]

Uran, ты используй не UNION, а UNION ALL - тебе же еще во [2] про это сказали...


Uran   (2004-11-03 13:16:00) [8]

ничего не понял ... думал ... получится ....  не получится ..
по сути кто нибудь может чего нибудь посоветовать!?


}|{yk   (2004-11-03 13:16:00) [9]

Посмотри в исходниках, как сделано например WIN1251_UA - его добавили, чтобы украинские буквы І, Є,Ї шли в алфавитном порядке при сортировке.


Johnmen   (2004-11-03 13:16:00) [10]

>Reindeer Moss Eater ©   (03.11.04 13:14) [9]

UNION - автоматом сортирует результат.
UNION ALL - в порядке селектов.

Не будет.


Reindeer Moss Eater   (2004-11-03 13:14:00) [11]

Я когда-то давно тоже думал, что в результате UNION без ORDER BY получается "этажерка" наборов данных получаемых отдельными его частями.
Прямо в том порядке, в каком составлен union.

Так что будет.


Uran   (2004-11-03 13:13:00) [12]

если не трудно , расскажи поподробнее насчет collate!?


}|{yk   (2004-11-03 13:12:00) [13]

Написать свой collate


Johnmen   (2004-11-03 13:11:00) [14]

>Reindeer Moss Eater ©   (03.11.04 13:06) [3]

Не будет :)


Reindeer Moss Eater   (2004-11-03 13:08:00) [15]

Все верно.


Uran   (2004-11-03 13:07:00) [16]

с union пробовал (UKAZAT -  процедура)
select * from UKAZAT  ( 465 ) where obzn is null
union
select * from UKAZAT  ( 465 ) where obzn like "#%"
union
select * from UKAZAT  ( 465 ) where obzn like "*%"
union
select * from UKAZAT  ( 465 ) where obzn like "-%"
union
select * from UKAZAT  ( 465 ) where obzn not like "*%" and obzn not like " %" and obzn not like "#%"

не получается .. с # все равно после * получается!


Reindeer Moss Eater   (2004-11-03 13:06:00) [17]

Скорее всего результирующий набор у UNION ALL все равно будет отсортирован по PK если не указывать ORDER BY


Johnmen   (2004-11-03 13:03:00) [18]

IS NULL, LIKE '#%' и т.п.
UNION ALL


Reindeer Moss Eater   (2004-11-03 13:00:00) [19]

Поможет функция, возвращающая нужный "вес" этих символов


Наверх

Титульная страница Поиск, карта сайта Написать письмо