Caso você tenha a necessidade de comparar resultados entre duas ou mais consultas no banco, existe um operador da ORACLE que disponibiliza esta funcionalidade que é o INTERSECT. Ele retorna todas as linhas selecionadas por todas as consultas ou conjunto de dados que estão presentes na consulta.
Se um registro estiver em uma consulta e não na outra este será omitido pelo INTERSECT.
A sintaxe para o operador INTERSECT é:
SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions]INTERSECT
SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions];
Exemplo – Com Expressão Única
O exemplo de uso do INTERSECT abaixo retorna um campo com o mesmo tipo de dados:
SELECT supplier_id
FROM suppliersINTERSECT
SELECT supplier_id
FROM orders;
Exemplo – com múltiplas expressões
No exemplo abaixo veja como usar o operador INTERSECT para retornar mais de uma coluna.
SELECT contact_id, last_name, first_name
FROM contacts
WHERE first_name <> ‘John’INTERSECT
SELECT customer_id, last_name, first_name
FROM customers
WHERE customer_id >= 89;
Bom, fico por aqui. Dúvidas, entre em contato.
Forte abraço.
Eduardo Santana
bufallos@bufallos.com.br