Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Union e Union ALL

Nessa aula a professora explicou o uso do UNION ALL para que todas as informacoes fossem mostradas mesmo que duplicadas. Mas caso houvesse a adicao do nome no select e ficasse assim:

SELECT nome, rua, bairro, cidade, cep from colaboradores
UNION ALL
SELECT nome, rua, bairro, cidade, cep from fornecedores

O uso do UNION ALL seria realmente necessário, considerando que não é possível duas pessoas com o mesmo nome morarem no mesmo endereço, e que uma mesma pessoa não pode ser simultaneamente fornecedor e colaborador?

4 respostas
solução!

Olá Pedro, tudo bem

Sobre o que você comentou de fato, se você tem certeza que não terá dados com duplicatas de fato pode usar apenas o UNION.

Mas, vale sempre lembrar que caso não tenha um campo com unique no select sempre há possibilidades de dados duplicados.

Nesse sentido, o UNION ALL sempre é uma boa opção.

Entendi, muito obrigado pela ajuda!!

Aproveitando esse conteudo, como eu faria para criar uma classificação "tipo nome" , diferenciando colaborador e fornecedor?

Para que o resultado final da sua consulta permita diferenciar colaboradores de fornecedores, você pode criar uma coluna que indique o tipo de cada registro.

Primeiro, criamos a coluna tipo_nome na consulta dos colaboradores, definindo o valor como 'colaborador' para todas as linhas:

SELECT nome, rua, bairro, cidade, cep, 'colaborador' AS tipo_nome
FROM colaboradores

Em seguida, fazemos o mesmo para a tabela de fornecedores, alterando o valor da coluna tipo_nome para 'fornecedor':

SELECT nome, rua, bairro, cidade, cep, 'fornecedor' AS tipo_nome
FROM fornecedores

Por fim, unimos as duas consultas usando UNION ALL. É importante lembrar que ambas as consultas precisam ter o mesmo número de colunas, na mesma ordem e com tipos compatíveis:

SELECT nome, rua, bairro, cidade, cep, 'colaborador' AS tipo_nome
FROM colaboradores
UNION ALL
SELECT nome, rua, bairro, cidade, cep, 'fornecedor' AS tipo_nome
FROM fornecedores

Dessa forma, você consegue diferenciar facilmente os registros no resultado final da consulta.