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

Откуда: славный город на Волге
Сообщений: 11
Помогите c чего начать и как организовать следующее
Oracle 9.2.1
Создаем один запрос который объединяет ряд таблиц и если он ничего не возвращает то выполнить другой селект.
все на SQL


"Я знаю одно, что я ничего не знаю". Кто то из великих, а куда нам тогда...
16 ноя 06, 14:27    [3409429]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
M_IV
Member

Откуда:
Сообщений: 1303
? PL/SQL
16 ноя 06, 14:33    [3409491]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
Proteus
Member

Откуда:
Сообщений: 1348
мало информации но попробую угадать
begin
  select ....
  into ...
  from .....;
exception
  when no_data_found then
     select ...
     into ....
     from ...;
end;
16 ноя 06, 14:34    [3409505]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
Evgeni2006
Member

Откуда: славный город на Волге
Сообщений: 11
sql встраивается в XML и там дальше выполняется боюсь что не поймет PL/sql

"Я знаю одно, что я ничего не знаю". Кто то из великих, а куда нам тогда...
16 ноя 06, 14:35    [3409514]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
Proteus
Member

Откуда:
Сообщений: 1348
select ....
union all
select
where <условие определяющее что в первом селекте нет записей>
16 ноя 06, 14:39    [3409557]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
Работа с мощными реле
(Но я бы так не делал)

select empno from
(select empno from scott.emp where sal = 800
 union all
 select deptno from scott.emp where sal = 800)
 where exists
(select empno from scott.emp where sal = 800
 union all
 select deptno from scott.emp where sal = 800)
 and not exists
 (select deptno from scott.emp where sal = 2500)
UNION ALL
select deptno from scott.emp where sal = 2500
AND NOT EXISTS
(select empno from scott.emp where sal =800
 union all
 select deptno from scott.emp where sal =800)
/
EMPNO
7369
20

select empno from
(select empno from scott.emp where sal = 2500
 union all
 select deptno from scott.emp where sal = 2500)
 where exists
(select empno from scott.emp where sal = 2500
 union all
 select deptno from scott.emp where sal = 2500)
 and not exists
 (select deptno from scott.emp where sal = 800)
UNION ALL
select deptno from scott.emp where sal = 800
AND NOT EXISTS
(select empno from scott.emp where sal =2500
 union all
 select deptno from scott.emp where sal =2500)

20
16 ноя 06, 14:51    [3409680]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
Evgeni2006
Member

Откуда: славный город на Волге
Сообщений: 11
Proteus
select ....
union all
select
where <условие определяющее что в первом селекте нет записей>


Все спасибо работает
16 ноя 06, 15:26    [3410020]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
Evgeni2006
Member

Откуда: славный город на Волге
Сообщений: 11
Небольшое уточнение порядок полей в двух select должен соответствовать друг другу. Несколько часо убил на поиск баги из-за этого

"Я знаю одно, что я ничего не знаю". Кто то из великих, а куда нам тогда...
17 ноя 06, 11:14    [3413754]     Ответить | Цитировать Сообщить модератору
 Re: Два запроса  [new]
Vadim Zh
Member

Откуда: Беларусь -> Москва
Сообщений: 297
Evgeni2006
Небольшое уточнение порядок полей в двух select должен соответствовать друг другу. Несколько часо убил на поиск баги из-за этого


При union порядок полей любой, главное:
1. количество выводимых столбцов совпадало;
2. соответствующие столбцы имели совместимые типы.

Т.е. запрос:
select a,b from tab1
union all
select b,a from tab1,
если a и b имеют совместимые типы отработает.
17 ноя 06, 11:33    [3413953]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить