Finalidade do Union
Olá galera,
podem me ajudar com uma questão,
Qual a finalidade do union ?
podem me ajudar com uma questão,
Qual a finalidade do union ?
Gustavo Fernandes
Curtidas 0
Respostas
Bruno Leandro
25/01/2013
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)
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)
GOSTEI 0
Danilo Gomes
25/01/2013
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.
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.
GOSTEI 0
Gustavo Fernandes
25/01/2013
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 ?
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 ?
GOSTEI 0
Danilo Gomes
25/01/2013
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.
Caso não tenham, pode fazer um cast em um dos selects, o importante é que ambos os retornos sejam compatíveis.
GOSTEI 0
Gustavo Fernandes
25/01/2013
Hum...
entendi, obrigado pela atenção Midas.
entendi, obrigado pela atenção Midas.
GOSTEI 0
William
25/01/2013
Gus estou encerrando o tópico, qualquer outra dúvida poste novamente.
GOSTEI 0