Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Упорядочивание в справочнике / 10 сообщений из 10, страница 1 из 1
07.08.2004, 09:34:03
    #32639461
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Привет всем!

Дан справочник:

id name
0 НЕТ
1 Казань
2 Астрахань

Нa MS SQL Server следующий запрос
Код: plaintext
1.
2.
select id, name
from table_name
order by cast(id as bit), name
приводит к результату

0 НЕТ
2 Астрахань
1 Казань

Вопрос: можно ли сделать такое без ХП в FB?
...
Рейтинг: 0 / 0
07.08.2004, 10:30:29
    #32639467
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Dik76Привет всем!

Дан справочник:

id name
0 НЕТ
1 Казань
2 Астрахань

Нa MS SQL Server следующий запрос
Код: plaintext
1.
2.
select id, name
from table_name
order by cast(id as bit), name
приводит к результату

0 НЕТ
2 Астрахань
1 Казань

Вопрос: можно ли сделать такое без ХП в FB?

Если лишнее поле не мешает, то можно так (несколько неестетично правда):

Код: plaintext
1.
2.
3.
4.
select  0  flag, id, name from table where id= 0 
union
select  1  flag, id,name from table where id<> 0 
order by  1 , 3 

Теоретически должно выдать:
0 0 НЕТ
1 2 Астрахань
1 1 Казань
...
Рейтинг: 0 / 0
07.08.2004, 18:20:07
    #32639615
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Можно. Но давай уточним. Тебе надо отсиртировать сначала все чётные,а потом нечётные ? Или что ?
...
Рейтинг: 0 / 0
07.08.2004, 19:01:47
    #32639630
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
JohnmenМожно. Но давай уточним. Тебе надо отсиртировать сначала все чётные,а потом нечётные ? Или что ?

А я так понял, что надо сначала вывести 'НЕТ', а остальные записи отсортировать по полю name
...
Рейтинг: 0 / 0
07.08.2004, 22:02:35
    #32639672
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Ну если так, то

Код: plaintext
1.
2.
3.
select id, name, case when id= 0  then  0  else  1  end
from table_name
order by  3 ,  2 

или (без case)

Код: plaintext
1.
2.
3.
select id, name, cast(id- 0 . 5  as int)-id
from table_name
order by  3 ,  2 
...
Рейтинг: 0 / 0
09.08.2004, 07:56:21
    #32640205
Somebody2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
JohnmenНу если так, то

...

или (без case)

Код: plaintext
1.
2.
3.
select id, name, cast(id- 0 . 5  as int)-id
from table_name
order by  3 ,  2 


Оригинально. Мне понравилось - но пара моментов:

1) Эта идея сработает если первой надо вывести запись с наименьшим id. Но в
общем случае, id может быть произвольным, тогда твой второй метод не применим.

2) Мне кажется второй метод должен работать меделнее чем union, если
проиндексировать по id (а оно наверняка primary key):

вычитание чисел с плавающей точкой, приведение к типу, вычитание целых
чисел. Хотя, даже если так, то разницу в 0.000...1 секунды никто конечно не
заметит
...
Рейтинг: 0 / 0
09.08.2004, 08:36:35
    #32640218
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Даже при обычном
select .....
from ....
order by name

НЕТ всегда будет первым если написать:
[НЕТ], <НЕТ>, !НЕТ!, или русскую Н заменить на латинскую Н.
...
Рейтинг: 0 / 0
09.08.2004, 09:02:49
    #32640233
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Всем спасибо за решения!

>Johnmen
Второй вариант действительно оригинален.

ZmeisheНЕТ всегда будет первым если написать:
[НЕТ], <НЕТ>, !НЕТ!, или русскую Н заменить на латинскую Н.
Это так, но тогда придется запрещать ввод этих символов, в противном случае пользователи могут ввести комбинацию, которая нарушит порядок. Например [Да].
...
Рейтинг: 0 / 0
09.08.2004, 09:25:14
    #32640261
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
авторЭто так, но тогда придется запрещать ввод этих символов, в противном случае пользователи могут ввести комбинацию, которая нарушит порядок. Например [Да].
Я своим не позволяю в справочниках редактировать записи с Id = 0. Это не их 'копенгаген'.
Ввод этих символов следует запретить в любом случае, кроме Id=0. Я уже полгода разгребаю геморрои, когда в фамилиях, названиях улиц, населённых пунктах нахерачили ланиницу. В деревне 10 домов, а записана она в базе ЧЕТЫРЕ раза вперемешку кириллица/латиница. Приходит абонент, а дебил оператор, не найдя этот населённый пункт в справочнике, заявляет: 'Мы Вас не обслуживаем'. О как! Два дома обслуживаем, а 8 нет.
...
Рейтинг: 0 / 0
09.08.2004, 10:29:05
    #32640382
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упорядочивание в справочнике
Ситуация знакомая
Потом слияние клиентов приходится делать.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Упорядочивание в справочнике / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]