..


Links Patrocinados

Use UNION para combinar os resultados de duas tabelas

Artigo escrito por Max Bossi

A linguagem SQL nos fornece uma maneira bastante simples de combinar, no mesmo comando SELECT, os resultados de duas tabelas diferentes.

Para conseguir isso, é hora de usar all'opertore UNIÃO que, de fato, a união dos resultados obtidos por meio de consulta a duas tabelas.

Note-se que, a fim de ser usado corretamente, é hora que o operador UNION:

  • que as tabelas são consultados sobre o mesmo número de colunas;
  • solicita que as colunas têm o mesmo nome;
  • que as colunas necessárias nas duas tabelas têm tipos de dados consistentes;
Vamos dar um exemplo: vamos dizer de ter que operar em um banco de dados da agência de viagens hipotéticas e assumir que o nosso DB contém apenas duas tabelas:
  • hotel_italia
    • nome
    • estrelas
    • cidade
    • nação
  • hotel_europa
    • nome
    • estrelas
    • cidade
    • nação
Agora, suponha que um cliente quer que saibamos tanto as ofertas de hotéis em Itália e na Europa:





 SELECT nome, estrelas, cidade, país







 FROM hotel_italia







 UNIÃO







 SELECT nome, estrelas, cidade, país







 FROM hotel_europa



Com esta consulta temos uma lista completa de todos os hotéis nas duas tabelas:

nome estrelas cidade nação
Hotel Cavour 4 Roma PT
Hotel Miramare 2 Católico PT
Hotel Manzoni 2 Milan PT
Hotel Espana 3 Madri ES
Hilton 5 Londres Reino Unido
Hotel am Schlossgarten 4 Stuttgart DE

Nota: observe que o operador UNION não mostra quaisquer registros duplicados (por padrão funciona como se fosse um SELECT DISTINCT ), e se você quiser alguma registros duplicados também show (acho que volta ao nosso exemplo, em um hotel neste tanto na tabela em que hotel_europa hotel_italia) terá que usar UNION ALL.

Classificar e limitar os resultados decorrentes da UNIÃO

Suponha que os resultados do uso de UNION e muitos querem que eles sejam limitados a número especificado. Como fazer? Aqui está uma solução:

 



 SELECT * FROM







 (SELECT nome, estrelas, cidade, país FROM hotel_italia







 UNIÃO







 SELECT nome, estrelas, cidade, país FROM hotel_europa)







 AS Hotel







 ORDER BY DESC LIMIT 10 estrelas

 
Em essência, nós tratamos os resultados decorrentes da união de duas ou mais tabelas como se fossem o resultado de uma única tabela, ao fazer isso podemos usar a classificação e limite normal.

Na mesma categoria ...
E-Learning
MS Access (Curso) MS Access (Curso)
Saiba como criar e gerenciar bancos de dados com facilidade e rapidez. A partir de 29 €.
MySQL (Curso) MySQL (Curso)
Gestão de banco de dados open-source. A partir de 39 €.
SQL e Banco de Dados (Curso) SQL e Banco de Dados (Curso)
Criar e gerenciar bancos de dados relacionais. A partir de 39 €.
Links Patrocinados