j'ai la requête suivante:

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

ce qu'il fait, c'est qu'il vérifie d'abord la condition col2 dans la table1, s'il n'y a pas de lignes, il renvoie les données de la table2.

je veux le convertir en vue afin de pouvoir exécuter la requête suivante et obtenir les mêmes résultats:

select col1 from my_view where col2='value'

est-ce possible ou existe-t-il un autre moyen d'y parvenir?

1
Asanka Senavirathna 4 nov. 2019 à 06:48

2 réponses

Reportez-vous à la documentation d'Oracle pour savoir comment créer des vues .

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')
0
Vince Orio 4 nov. 2019 à 07:52

Je pense que ce qui suit est ce que vous voulez, bien que ce ne soit pas exactement ce que vous avez demandé (manquant col2 = 'value' dans la deuxième partie de votre requête?):

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)
1
Radagast81 4 nov. 2019 à 09:06