powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите, как это сделать в FB
6 сообщений из 6, страница 1 из 1
Подскажите, как это сделать в FB
    #38759384
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица с ключевым полем.
Код: sql
1.
2.
select * from  table
where  id  in (141,170,155,143)



Хочется получить данные отсортированные по списку в выражении in в примере (141,170,155,143).
Как этого добиться с минимальным геморроем - не знаю. Жду совета. Версия 2.1
...
Рейтинг: 0 / 0
Подскажите, как это сделать в FB
    #38759389
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvim,

так пойдёт

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * 
from table
where id in (141,170,155,143)
order by case id
              when 141 then 1
              when 170 then 2
              when 155 then 3
              when 143 then 4
         end
...
Рейтинг: 0 / 0
Подскажите, как это сделать в FB
    #38759390
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXECUTE BLOCK + выборка отдельными запросами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подскажите, как это сделать в FB
    #38759400
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
Нет , переменная у меня "141,170,155,143" + среда исполнения своеобразна.
Из нее ваш текст делать сложно, проще через создание промежуточной таблицы ...
...
Рейтинг: 0 / 0
Подскажите, как это сделать в FB
    #38759441
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvim,

создаем процедуру
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
create or alter procedure STRTOTABLE (
    STR varchar(2000),
    L varchar(20) = ',')
returns (
    N integer,
    CODE varchar(100))
AS
declare variable p integer = -1;
declare variable t integer = 1;
declare variable l1 integer;
begin
  N = 1;
  l1 = char_length(l);
  while (p <> 0) do
  begin
    p = position(l, str, t);
    if (p = 0) then
      code = substring(str from t);
    else
      code = substring(str from t for p-t);
    if (code > '') then
    begin
      suspend;
      N = N+1;
    end
    t = p+l1;
  end
end



И вызов
Код: sql
1.
2.
select t.* from strttable('141,170,155,143') s
left join table t on t.id = s.code
...
Рейтинг: 0 / 0
Подскажите, как это сделать в FB
    #38761347
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите, как это сделать в FB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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