Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка в соответствии с where e_id in (.....) / 16 сообщений из 16, страница 1 из 1
06.11.2016, 23:56
    #39342278
wadim37
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
Добрый день.

Подскажите пож-та как оптимизировать выражение?

select e_id
from Eigenschaften
where e_id in (1, 6, 3, 124, 120, 126, 121);

Результат

E_ID
----------
1
3
6
120
121
124
126

Как можно получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"

Спасибо
...
Рейтинг: 0 / 0
07.11.2016, 01:15
    #39342298
Вадиман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
Есть разница между понятиями "множество" и "кортеж".
В этом примере используется классическое "множество".
Читаем определения.
...
Рейтинг: 0 / 0
07.11.2016, 02:05
    #39342300
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
...
Рейтинг: 0 / 0
09.11.2016, 12:50
    #39344143
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
wadim37Как можно получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"
Ну наверное, написав order by
так не делать. :)
Код: plsql
1.
order by (select min(r) from (select column_value c,rownum r from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121))) where e_id=c)


...
Рейтинг: 0 / 0
09.11.2016, 12:59
    #39344149
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
Хотя можно и попытаться обмануть судьбу
Код: plsql
1.
2.
3.
select column_value e_id
from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121)) 
where exists (select null from Eigenschaften where e_id=column_value)

...
Рейтинг: 0 / 0
09.11.2016, 13:27
    #39344187
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
Сергей Арсеньев,

судьба может наказать
Код: plsql
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.
with Eigenschaften as
(select 1 e_id from dual
union all select 6 e_id from dual
union all select 3 e_id from dual
union all select 124 e_id from dual
union all select 120 e_id from dual
union all select 121 e_id from dual
union all select 126 e_id from dual)
select
column_value e_id
from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121)) t1 
where exists (select null from Eigenschaften t2 where e_id = column_value);

with Eigenschaften as
(select 1 e_id from dual
union all select 6 e_id from dual
union all select 3 e_id from dual
union all select 124 e_id from dual
union all select 120 e_id from dual
union all select 121 e_id from dual
union all select 126 e_id from dual)
select --+ use_nl(t1 t2) leading(t2 t1)
column_value e_id
from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121)) t1 
where exists (select null from Eigenschaften t2 where e_id = column_value);


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
      E_ID
----------
         1
         6
         3
       124
       120
       126
       121

7 rows selected.

      E_ID
----------
         1
         6
       120
       121
         3
       124
       126

7 rows selected.


...
Рейтинг: 0 / 0
09.11.2016, 15:25
    #39344287
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
dbms_photoshop,

Так я и говорил, про "попытаться обмануть судьбу".

Правильно, либо, как указал SY, ну или join с табличкой определяющей порядок.
Но в любом случае есть правило: нужен порядок - используй order by. :)
...
Рейтинг: 0 / 0
11.11.2016, 23:47
    #39345975
wadim37
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
Спасибо конечно за совет

order by

но вопрос стоит, как получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"
...
Рейтинг: 0 / 0
12.11.2016, 00:07
    #39345983
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
wadim37но вопрос стоит, как получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"Для тех кто в танке, повторяем: Только явно сопоставив, что 6 - это второй, 3 - третий и т.д.
...
Рейтинг: 0 / 0
12.11.2016, 01:21
    #39345999
0.10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
sys.odcinumberlist(1.0, 6.1, 3.2, 124.3, 120.4, 126.5, 121.6)
...
Рейтинг: 0 / 0
12.11.2016, 04:39
    #39346008
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
0.10sys.odcinumberlist(1.0, 6.1, 3.2, 124.3, 120.4, 126.5, 121.6)

Ну и что же ты будешь дeлать когда чисел будет бoльше 10?

SY.
...
Рейтинг: 0 / 0
12.11.2016, 07:57
    #39346026
0.0001
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
SY,

Повысив значность мантиссы, можно и большее число занумеровать.
...
Рейтинг: 0 / 0
12.11.2016, 08:22
    #39346028
elunin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
Код: plsql
1.
2.
3.
4.
5.
SELECT a.e_id
  FROM eigenschaften a
     , TABLE(t_number_table(1, 6, 3, 124, 120, 126, 121)) b
 WHERE a.e_id = b.column_value
 ORDER BY b.column_value



, где t_number_table у меня определен как
Код: plsql
1.
create or replace type t_number_table FORCE as TABLE OF NUMBER;
...
Рейтинг: 0 / 0
12.11.2016, 09:04
    #39346031
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
elunin
Код: plsql
1.
2.
     , TABLE(t_number_table(1, 6, 3, 124, 120, 126, 121)) b
 ORDER BY b.column_value

Сортировать по значению так просто ... - Но не требовалось. Учись читать внимательно.
...
Рейтинг: 0 / 0
12.11.2016, 10:43
    #39346040
Сортировка в соответствии с where e_id in (.....)
0.0001Повысив значность мантиссы, можно и большее число занумеровать.
.9 -> 9
.01 -> 10
to_number(reverse(to_char(mod(column_value, 1))))
...
Рейтинг: 0 / 0
12.11.2016, 10:48
    #39346042
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в соответствии с where e_id in (.....)
альтернатива.reverseДовольно опасная.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка в соответствии с where e_id in (.....) / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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