powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Упорядочивание в справочнике
10 сообщений из 10, страница 1 из 1
Упорядочивание в справочнике
    #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
Упорядочивание в справочнике
    #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
Упорядочивание в справочнике
    #32639615
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Но давай уточним. Тебе надо отсиртировать сначала все чётные,а потом нечётные ? Или что ?
...
Рейтинг: 0 / 0
Упорядочивание в справочнике
    #32639630
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JohnmenМожно. Но давай уточним. Тебе надо отсиртировать сначала все чётные,а потом нечётные ? Или что ?

А я так понял, что надо сначала вывести 'НЕТ', а остальные записи отсортировать по полю name
...
Рейтинг: 0 / 0
Упорядочивание в справочнике
    #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
Упорядочивание в справочнике
    #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
Упорядочивание в справочнике
    #32640218
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже при обычном
select .....
from ....
order by name

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

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

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


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