SQL UNION ALL: Une Resultados de Consultas

El comando SQL UNION ALL es muy similar al comando UNION. Permite concatenar los registros de múltiples consultas, con la única diferencia de que este comando permite incluir todos los registros, incluso duplicados. Por lo tanto, si el mismo registro está normalmente presente en los resultados de las 2 consultas concatenadas, entonces la unión de las 2 con UNION ALL devolverá 2 veces este mismo resultado.

A saber: El comando SQL UNION ALL,  en las 2 consultas deben de tener de forma exacta el mismo número de columnas, con los mismos tipos de datos y en la misma secuencia.

sql union all

Sintaxis SQL UNION ALL

La sintaxis de la consulta SQL UNION ALL para unir los resultados de las 2 tablas es la siguiente:

SELECT expresión1, expresión2, ... expresión_n
FROM tabla
[WHERE condición]
UNION ALL
SELECT expresión1, expresión2, ... expresión_n
FROM tabla
[WHERE condición];

 Parámetros o Argumentos

expresión1, expresión2, expresión_n: columnas o cálculos a recuperar.
Tabla: Las tablas donde están los datos a recuperar. Son de carácter obligatorio en la cláusula FROM, para poder obtener éxito en una consulta.
Where condición: Opcional. Las condiciones que se deben cumplir para que los registros sean seleccionados.

Nota:

  • En el comando SQL UNION ALL al que tener el mismo número de expresiones en ambas declaraciones SELECT
  • Las expresiones correspondientes deben tener el mismo tipo de datos en las sentencias SELECT. Por ejemplo: expresión1 debe ser del mismo tipo de datos tanto en la primera como en la segunda instrucción SELECT.
  • Véase también el operador SQL INTERSECT

Ejemplo SQL UNION ALL

Imagina una empresa que tiene bases de datos en cada una de estas tiendas. En estas bases de datos hay una tabla de la lista de clientes con alguna información y el total de compras en la empresa.

La tabla «magasin1_client» corresponde a la primera tienda:

nombreApellidociudadFecha_nacimientototal
LeoDupuisParís1983-03-06135
MaríaBernardParís1993-07-0375
SofíaDuncanMarsella1986-02-2227
José Fernández París1976-11-2439

 

La tabla «magasin2_client» corresponde a la segunda tienda:

nombreApellidociudadFecha_nacimientototal
MarionLeroyLyon1982-10-27285
PaulMoreauLyon1976-04-19133
MaríaBernardParís1993-07-0375
José FernándezParís1976-11-2439

 

Para concatenar todos los registros de estas tablas, es posible realizar una única consulta mediante el comando SQL UNION ALL, como el ejemplo siguiente:

SELECT * FROM magasin1_client
UNION ALL
SELECT * FROM magasin2_client

Resultado:

nombreapellidociudadFecha_nacimientototal
LeoDupuisParís1983-03-06135
MaríaBernardParís1993-07-0375
SofíaDuncanMarsella1986-02-2227
José FernándezParís1976-11-2439
MarionLeroyLyon1982-10-27285
PaulMoreauLyon1976-04-19133
MaríaBernardParís1993-07-0375
José  FernándezParís1976-11-2439

 

El resultado de esta consulta muestra que hay tantos registros como en las 2 tablas combinadas. Es decir, hay algunos clientes que estaban presentes en las 2 tablas de orígenes por lo que están presentes 2 veces en el resultado de esta consulta SQL Server.

Conclusión 

Usar el operador UNION significa que nuestro conjunto de datos devolverá una lista de nombres únicos entre las dos declaraciones de selección. Como se mencionó, el uso de UNION ALL permitiría la devolución de registros duplicados. 

A continuación, se detallan las ventajas mencionadas:

  • El comando sql Union all muestra todos los valores específicos de la consulta, incluidos los que se están duplicando.
  • Este comando sql Union all es comparativamente más rápido, ya que solo tiene que presentar todos los valores, independientemente de los valores de clonación.
  • Union all no elimina los valores duplicados, si quiere eliminar valores duplicado utiliza el operador Union solo. Los valores deben estar unidos, pero no es necesario ordenarlos.
  • Los operadores de conjuntos básicos son : Unión, Union All, EXCEPT, INTERSECT. Los operadores de unión solo funcionan si tenemos el mismo número de columnas entre declaraciones de selección. Las consultas de unión más grandes pueden ser más difíciles de detectar, pero ejecutar una consulta con un número de columnas no coincidente debería producir un error. También queremos estar seguros de que los tipos de datos coincidan, ej. INTEGER a INTEGER, VARCHAR() a VARCHAR(). No todas las bases de datos se preocuparán por las discrepancias de tipos de datos, como SQLite, pero otras sí, como SQL Server. Si los tipos de datos no coinciden, pero las columnas que estamos seleccionando son las que necesitamos, entonces podemos usar la función CAST() para cambiar los campos necesarios para que los tipos de datos se alineen.

Deja un comentario