Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как правильно написать запрос / 9 сообщений из 9, страница 1 из 1
17.12.2020, 17:11
    #40028835
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
Подскажите как написать запрос, который
В зависимости от поля во внешней таблицы (potential) выбирает соответсвующую колонку во внутренней таблицы

Код: plsql
1.
2.
3.
4.
5.
Select 
csp.id, 
(Select case when csp.product='Рыбы' then pl.name1 )
     when csp.product='Мясо' then pl.name2 end as kind from potential pl  )
 from potential csp
...
Рейтинг: 0 / 0
17.12.2020, 17:27
    #40028842
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
x17.mstu,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> ed
Wrote file afiedt.buf

  1  with  potential (product,name1,name2) as (
  2  select 'Рыбы','Карась','' from dual union all
  3  select 'Мясо','Корова','Говядина' from dual  union all
  4  select 'Птица','Пица','Карамель' from dual
  5  )
  6* select product,decode(product,'Рыбы',name1,'Мясо',name2,'???') txt from potential
SQL> /

PRODU TXT
----- --------
Рыбы  Карась
Мясо  Говядина
Птица ???




.....
stax
...
Рейтинг: 0 / 0
17.12.2020, 17:33
    #40028848
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
Stax,

причем тут decode
У меня две разные таблицы potential и допустим not_potential

Select
csp.id,
(Select case when csp.product='Рыбы' then pl.name1 )
when csp.product='Мясо' then pl.name2 end as kind from not_potential pl )
from potential csp
...
Рейтинг: 0 / 0
17.12.2020, 17:34
    #40028850
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
Stax,

вы выбираете product и name1 из одной таблицы а у меня они в разных
...
Рейтинг: 0 / 0
17.12.2020, 17:36
    #40028854
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
x17.mstu,
case + inline select
...
Рейтинг: 0 / 0
17.12.2020, 17:43
    #40028858
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
Egoр, получается два case нужно будет и в каждом case + селект из внутренний таблицы
По другому нельзя?
...
Рейтинг: 0 / 0
17.12.2020, 17:54
    #40028863
x17.mstu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
x17.mstu,

Разобрался можно было записать вот так

Select * from
(
Select
case when ....then ...
when .....then .....end as ....
from t1
where t1.inn=t2.inn
) as

from t2
...
Рейтинг: 0 / 0
17.12.2020, 17:56
    #40028866
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
x17.mstu
Stax,

вы выбираете product и name1 из одной таблицы а у меня они в разных


откуда мне знать

приведите тестовые данные и что получить

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  1  with  potential (id,product) as (
  2  select 1,'Рыбы' from dual union all
  3  select 2,'Мясо' from dual  union all
  4  select 4,'Птица' from dual
  5  )
  6   ,table2 (name1,name2) as (select 'кг.','шт,' from dual)
  7  select
  8   id
  9   ,product
 10   ,(select decode(product,'Мясо',name1,'Рыбы',name2,'???') txt from table2 -- where...
 11  ) txt
 12* from potential p
SQL> .
SQL> .
SQL> /

        ID PRODU TXT
---------- ----- ---
         1 Рыбы  шт,
         2 Мясо  кг.
         4 Птица ???




....
stax
...
Рейтинг: 0 / 0
17.12.2020, 17:57
    #40028868
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать запрос
x17.mstu,

case [expr]
when [value1] then [inline1]
when [value2] then [inline2]
...
else then [inlineN]
end

>> По другому нельзя?
какие требования к "другому"?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как правильно написать запрос / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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