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?
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')
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)
De nouvelles questions
oracle
Oracle Database est un système de gestion de base de données multimodèle créé par Oracle Corporation. N'utilisez PAS cette balise pour d'autres produits appartenant à Oracle, tels que Java et MySQL.