Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как реализовать запрос с условием вида :  [new]
Maart
Member

Откуда:
Сообщений: 112
Как реализовать запрос с условием следующего вида:


select 
       (case when 1=1 -- некое условие иногда true иногда false  
           then (select 2,3 from dual) 
           else (select 4,5 from dual)
       end) as col1,col2
from dual 
25 июл 07, 12:15    [4433389]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Написать два скаляра (на каждое поле) или если возможно (что лучше, но уже зависит от задачи) опустить подзапросы ниже к FROM-у
ЗЫ: Я исхожу из того, что в реальном запросе - это не константы, просто упрощено :)
25 июл 07, 12:20    [4433429]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Maart
Member

Откуда:
Сообщений: 112
Jannny

Написать два скаляра (на каждое поле)

Не понял эту фразу. Если не сложно поясните на примере.

Jannny

если возможно (что лучше, но уже зависит от задачи) опустить подзапросы ниже к FROM-у

К сожалению нельзя по логике задания.

Jannny

ЗЫ: Я исхожу из того, что в реальном запросе - это не константы, просто упрощено :)

Конечно :)
25 июл 07, 12:26    [4433489]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Elic
Member

Откуда:
Сообщений: 29980
select 2 as col1, 3 as col2 from dual where 1=1
union all
select 4 as col1, 5 as col2 from dual where not (1=1) -- not exists(select null from dual where 1=1)
25 июл 07, 12:40    [4433632]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Maart
Member

Откуда:
Сообщений: 112
Elic
select 2 as col1, 3 as col2 from dual where 1=1
union all
select 4 as col1, 5 as col2 from dual where not (1=1) -- not exists(select null from dual where 1=1)


Да это вариант. Спасибо.

Интересно почему не была реализована модель которую я показал.
25 июл 07, 13:03    [4433841]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
Maart
Интересно почему не была реализована модель которую я показал.

А зачем?
25 июл 07, 13:09    [4433887]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Elic
Member

Откуда:
Сообщений: 29980
Maart
Интересно почему не была реализована модель которую я показал.
Ключевое слово - скаляр.
Полуобход - объекты.
25 июл 07, 13:10    [4433894]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Maart
Elic
select 2 as col1, 3 as col2 from dual where 1=1
union all
select 4 as col1, 5 as col2 from dual where not (1=1) -- not exists(select null from dual where 1=1)

Да это вариант. Спасибо.
Maart
Jannny

если возможно (что лучше, но уже зависит от задачи) опустить подзапросы ниже к FROM-у

К сожалению нельзя по логике задания.
Интересно, как это сочетается?
25 июл 07, 14:30    [4434491]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Maart
Member

Откуда:
Сообщений: 112
Jannny
Интересно, как это сочетается?


Не понял вопроса.
Разве там представлен вариант с использованием фразы from с подзапросами?
25 июл 07, 14:46    [4434596]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Stax..
Guest
Maart
Jannny

Написать два скаляра (на каждое поле)

Не понял эту фразу. Если не сложно поясните на примере.

а так чем плохо, из-за двух сканов?
select
       (case when 1=1 -- некое условие иногда true иногда false
           then (select 2 from dual)
           else (select 4 from dual)
       end) as col1,
       (case when 1=1 -- некое условие иногда true иногда false
           then (select 3 from dual)
           else (select 5 from dual)
       end) as col2
from dual
/
.....
stax
25 июл 07, 22:59    [4436681]     Ответить | Цитировать Сообщить модератору
 Re: Как реализовать запрос с условием вида :  [new]
Maart
Member

Откуда:
Сообщений: 112
Stax..
а так чем плохо, из-за двух сканов?
select
       (case when 1=1 -- некое условие иногда true иногда false
           then (select 2 from dual)
           else (select 4 from dual)
       end) as col1,
       (case when 1=1 -- некое условие иногда true иногда false
           then (select 3 from dual)
           else (select 5 from dual)
       end) as col2
from dual
/
.....
stax


бОльший код получается при такой же сути...
1 авг 07, 10:49    [4462246]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить