Oracle объединяет, где состояние в представлении - PullRequest
1 голос
/ 04 ноября 2019

у меня следующий запрос:

SELECT col1
FROM table1 where col2 = 'value'
UNION ALL
SELECT col1
FROM table2 
WHERE NOT EXISTS(SELECT col1 FROM table1 where col2 = 'value')

что он делает, он сначала проверяет состояние col2 в таблице table1, если строк нет, он возвращает данные из таблицы 2.

я хочупреобразовать это в представление, чтобы я мог выполнить следующий запрос и получить те же результаты:

select col1 from my_view where col2='value'

это возможно или есть какой-то другой способ добиться этого?

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Я думаю, что вам нужно следующее, хотя это не совсем то, о чем вы просили (отсутствует col2 = 'value' во второй части вашего запроса?):

SELECT col1, col2 
  FROM TABLE1 a
UNION ALL
SELECT col1, col2
  FROM TABLE2 b
 WHERE NOT EXISTS(SELECT 1 FROM table1 WHERE col2 = b.col2)
0 голосов
/ 04 ноября 2019

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

CREATE VIEW my_view ("col1", "col2") AS
SELECT col1
FROM table1 where col2 = 'value'
UNION ALL
SELECT col1
FROM table2 
WHERE NOT EXISTS(SELECT col1 FROM table1 where col2 = 'value')
...