Saltar la navegación

3.7. Unión

Ocasionalmente, es conveniente combinar los resultados de dos o más consultas en una única tabla de resultados totales. SQL soporta esta capacidad gracias a la característica UNION de la sentencia SELECT.

Por ejemplo, supongamos que queremos resolver la petición: “Lista todos los productos en donde el precio del producto exceda de 20 o en donde más de 120 unidades del producto hayan sido pedidas en un algún pedido”.

SELECT idProducto,PrecioUnidad FROM Neptuno.`Detalles de pedidos` WHERE Cantidad>120 UNION SELECT idProducto,PrecioUnidad FROM Neptuno.`Productos` WHERE PrecioUnidad>20 ORDER BY IdProducto;

Conocimiento previo

Para poder realizar una unión existen varias restricciones:

  • Ambas tablas deben contener el mismo número de columnas.
  • El tipo de datos de cada columna en la primera tabla debe ser el mismo que el tipo de datos en la columna correspondiente en la segunda tabla.
  • Ninguna de las dos tablas puede estar ordenadas con la cláusula ORDER BY.

Puede observarse que la UNION combina las filas de los dos conjuntos de resultados eliminando por defecto las filas duplicadas. Si se desean mantener las filas duplicadas en una operación UNION, se puede especificar la palabra clave ALL a continuación de la palabra UNION.

SELECT idProducto,PrecioUnidad FROM Neptuno.`Detalles de pedidos` WHERE Cantidad>120 UNION ALL SELECT idProducto,PrecioUnidad FROM Neptuno.`Productos` WHERE PrecioUnidad>20 ORDER BY IdProducto;