powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / помогите с сортировкой!
5 сообщений из 5, страница 1 из 1
помогите с сортировкой!
    #34778303
yack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
1. таблица table1 с данными. Ключ - поле id
2. Массив A, содержащий id, отсортированніе в нужном порядке. Например, A=array[87, 5, 64, 90].
Массив формирую из прикладухи.

Задача - выбрать из table1 только те записи, что есть в A. Это не проблема -
SELECT * FROM table1 WHERE id IN (87, 5,64, 90);

Вопрос:
Что я должен написать в ORDER, чтоб в результате запроса id у меня были отсортированы так же, как они отсортированы в массиве.

???
...
Рейтинг: 0 / 0
помогите с сортировкой!
    #34778690
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yackДано:
1. таблица table1 с данными. Ключ - поле id
2. Массив A, содержащий id, отсортированніе в нужном порядке. Например, A=array[87, 5, 64, 90].
Массив формирую из прикладухи.

Задача - выбрать из table1 только те записи, что есть в A. Это не проблема -
SELECT * FROM table1 WHERE id IN (87, 5,64, 90);

Вопрос:
Что я должен написать в ORDER, чтоб в результате запроса id у меня были отсортированы так же, как они отсортированы в массиве.

???
Если массив небольшого размера - можно CASE (пример 1), иначе - формируй временную таблицу (пример 2):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- пример 1
SELECT 
    CASE id 
      WHEN  87  THEN  1 
      WHEN   5  THEN  2 
      WHEN  64  THEN  3 
      WHEN  90  THEN  4 
    END CASE AS order_field
  , * 
  FROM table1 
    WHERE id IN ( 87 ,  5 , 64 ,  90 );
  ORDER BY order_field;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
-- пример 2
типа:
temp table tmpOrder(order_field, key_field)
INSERT  1 ,  87 
INSERT  2 ,  5 
INSERT  3 ,  64 
INSERT  4 ,  90 

SELECT 
    tmpOrder.order_field
  , table1.* 
  FROM table1, tmpOrder
    WHERE tmpOrder.key_field = table1.id
  ORDER BY tmpOrder.order_field;
...
Рейтинг: 0 / 0
помогите с сортировкой!
    #34778877
yack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
А какой-нибудь стандартной функции вродь-таки нету.
...
Рейтинг: 0 / 0
помогите с сортировкой!
    #34779119
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yack
А какой-нибудь стандартной функции вродь-таки нету.

Это утверждение?
Вопрос?
"Риторический возглас"?
Функцию хорошо искать когда к ней требования по входу-выходу знаешь. А ваша постановка на функцию, IMHO, не похожа :)
...
Рейтинг: 0 / 0
помогите с сортировкой!
    #34779174
yack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это скорее риторический вопрос :-)
Спасибо, уже сделал, работает.

Только в первом примере не "END CASE" а просто "END", но это детали.
А в целом - еще раз большое человеческое :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / помогите с сортировкой!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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