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 |