Finalidade do Union

25/01/2013

1

Olá galera,

podem me ajudar com uma questão,

Qual a finalidade do union ?
Responder

Posts

25/01/2013

Bruno Leandro

a finalidade é unir dois select com os mesmo campos mas que tenham condições diferentes, porque segundo os dba usar or deixar os selects lentos. existem outros casos tambem. por exemplo voce quer listar todos os clientes e suas compras, e caso um cliente nao tenha compra voce quer retornar um registro com valores especificos

Ex

select codigo,nome from tabela where data > 1900-01-01 and data < 2000-12-31
union
select codigo,nome from tabela where data = 2012-12-31


select codigo,nome,sum(valor_compra) from vendas
union
select codigo,nome,0 from clientes
where not exists( select codigo from vendas where vendas.codigo_cliente = clientes.codigo_cliente)
Responder

25/01/2013

Danilo Gomes

Então, cara, a ideia é essa apresentada na primeira resposta mesmo.

Não sei se você quis entender o "sentido" disso.

Muitas vezes temos que recuperar informações que, para determinada área do sistema, possuem o mesmo sentido lógico.
Contudo, no banco de dados, possuem origens diferentes.

Já tive, por exemplo, que pegar lançamentos bancários de origens distintas, tabelas distintas e estruturas distintas.
Mas para aquele relatório, não fazia diferença de onde era.

Muitas vezes, trabalhar com union, teoria dos conjuntos, é bem mais simples e intuitivo que trabalhar com uma série de joins complexos.
Responder
Bruno,

muito boa sua explicação só mais uma pergunta.

No select que demonstro os atributos que

tenho no primeiro select, também tenho que ter os mesmos no segundo ?
Responder

26/01/2013

Danilo Gomes

Não necessariamente os mesmos atributos, mas eles tem que ter tipos compatíveis.

Caso não tenham, pode fazer um cast em um dos selects, o importante é que ambos os retornos sejam compatíveis.
Responder
Hum...

entendi, obrigado pela atenção Midas.
Responder

28/01/2013

William

Gus estou encerrando o tópico, qualquer outra dúvida poste novamente.
Responder