Guía rápida de sql Operador UNION

El operador UNION se usa para combinar el resultado de dos o mas consultas SELECTS.

Para que funcione cada SELECT debe de tener el mismo número de campos y estos campos deben de ser de un tipo similar, por ejemplo ciudades, nombres, teléfonos… además de que cada SELECT debe de tener el mismo orden.

Lo que hace el operador UNION básicamente, es presentar el resultado de una de las consultas a continuación de la otra como si fueran la misma, tal y como veremos más abajo en los ejemplos

La sintaxis es:

SELECT columnas FROM tabla_1 UNION SELECT columnas FROM tabla_2

De hecho el operador UNION solo presenta un resultado por cada valor que encuentre, de este modo si hay dos entradas con por ejemplo la misma ciudad, solo reconocerá el primero. Si queremos hacer que nos muestre todos los resultados debemos introducir ALL en el operador de la siguiente forma.

SELECT columnas FROM tabla_1 UNION ALL SELECT columnas FROM tabla_2

A continuación vamos a ver algunos ejemplos sencillos sobre como funciona este operador con la BBBDD neptuno.

Operador UNION

SELECT Ciudad, Pais FROM cliente UNION SELECT Ciudad, Pais FROM proveedor

Esto nos devuelve una tabla enorme pero donde no se repiten resultados, a continuación vemos un resumen de dicha tabla.

ciudad País
Berlín Alemania
México D.F. México
Londres Reino Unido
Luleå Suecia
Mannheim Alemania
Estrasburgo Francia
Madrid España
Marsella Francia
Tsawassen Canadá
New Orleans Estados Unidos

Operador UNION ALL

Ahora vamos a ver como funciona la misma consulta con el operador ALL

SELECT Ciudad, Pais FROM cliente UNION ALL SELECT Ciudad, Pais FROM proveedor

Y el fragmento de la tabla donde vemos como se repiten algunas ciudades y países como Mexico y Ciudad de Mexico.

ciudad País
Berlín Alemania
México D.F. México
México D.F. México
Londres Reino Unido
Luleå Suecia
Mannheim Alemania
Estrasburgo Francia
Madrid España
Marsella Francia
Tsawassen Canadá

Operador UNION con WHERE

Pero podemos ir un poco más allá y colocar WHERE en nuestras consultas e incluso un ORDER BY tal y como vemos aquí:

SELECT Ciudad, Pais FROM cliente WHERE pais=’España’ UNION ALL SELECT Ciudad, Pais FROM proveedor WHERE pais=’España’ ORDER BY Ciudad

Y que  nos da como resultado:

ciudad País
Barcelona España
Madrid España
Madrid España
Madrid España
Oviedo España
Sevilla España