Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIDADE 3 | BANCO DE DADOS FUNÇÕES 138 Segundo Aléssio (2015), a união (UNION) de duas relações é o conjunto de todas as linhas que estão em uma ou outra relação, ignorando as duplicadas, ou seja, retorna à união de dois select’s, ignorando as linhas que estão duplicadas. Já a interseção (INTERSECT) resultará no conjunto de todas as linhas que estão simultaneamente em ambas as relações, ou seja, retorna à interseção de dois se- lect’s. Já a diferença (MINUS) é o conjunto de todas as linhas que estão em apenas uma das relações, ou seja, retorna à subtração de dois select. Antes de apresentar- mos os respectivos exemplos, vejamos algumas regras que devem ser obedecidas para a utilização desses comandos, segundo Aléssio (2015, p. 82). • A cláusula Select deve selecionar o mesmo número de colunas. • As colunas correspondentes devem ser do mesmo tipo de dado. • As linhas duplicadas são automaticamente eliminadas. • Os nomes das colunas do primeiro select é que aparecem no re- sultado. • A cláusula order by deve aparecer no final do comando. • A cláusula order by somente pode ser usada indicando o número da coluna. Vamos verificar a figura, nela temos seleções muito parecidas, na quantidade e no tipo, mas não no conteúdo. Na primeira seleção, estamos buscando da visão que criamos anteriormente o salário anual, já na segunda estamos buscando o salário mensal. Também estamos indicando por qual coluna devemos fazer a ordenação, neste caso a coluna 3 que é a salário. O comando Union não apresenta as linhas que se repetem, mas se você quiser apresentar as linhas que aparecem nas duas seleções, pode usar o UNON ALL, que segue as mesmas regras. Vejamos o exemplo: SELECT 'A' pesquisa, v_emp.nome_completo nome, v_emp.salario_ anual salario, d.department_name FROM V_Consulta_empregado v_emp, employees e, departments d WHERE v_emp.cod_empregado = e.employee_id AND d.department_id = e.department_id AND v_emp.salario_anual > 200000 UNION SELECT 'B' pesquisa, v_emp.nome_completo nome, e.salary salario, d.department_name FROM V_Consulta_empregado v_emp, employees e,departments d WHERE v_emp.cod_empregado = e.employee_id AND d.department_id = e.department_id AND e.salary > 15000;
Compartilhar