Oracle: Как я могу вернуть строки 2-го объединения, только если они существуют? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть два выбора в сочетании с объединением в Oracle. Я просто хочу вернуть строки 2-го объединения, если оно что-то возвращает, хотя 1-й союз также может возвращать строки.

Я думал об использовании nvl, но я не уверен, как это реализовать.

select 1 seq,
       x coord1,
       y coord2,
       z coord3
  from tableA a
 where a.prodRef = 4711
 union
select 2 seq,
       a coord1,
       b coord2,
       c coord3
  from tableB b
 where b.prodRef = 4711

Теперь селектор возвращает строки из запросов с seq 1 и seq 2. Если есть выход из запроса с seq 2, я просто хочу увидеть эти данные (исключая seq 1 строки),однако могут быть случаи, когда seq 2 может возвращать нулевые строки. Конечно, в этом случае я просто беру данные seq 1.

У вас, ребята, есть идеи, как это решить? Мой разум совершенно пуст.

1 Ответ

0 голосов
/ 04 октября 2019

Использование not exists:

select 2 as seq, a as coord1, b as coord2, c as coord3
from tableB b
where b.prodRef = 4711
union all
select 1 as seq, x as coord1, y as coord2, z as coord3
from tableA a
where a.prodRef = 4711 and
      not exists (select 1 from tableB b where b.prodRef = a.prodRef);
...