Mysql – UNION ALL y GROUP BY o ORDER BY

Cuando en MySql se utiliza el UNION ALL, estamos uniendo los resultados de varias consultas. Para ello, debe cumplirse varias condiciones, entre la que estan que sean las mismas columnas. Pongamos un ejemplo en el que unimos los resultados de dos consultas, una al trabajador con su trabajo y otra el trabajador con su hogar. De las dos conultas sacamos los mismos datos: id, nombre, apellidos y direccion (nótese que dirección es diferente en cada consulta).

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT Id, Nombre, Apellidos, Direccion
FROM (
    SELECT Trabajador.Id, Trabajador.Nombre, Trabajador.Apellidos, Trabajo.Direccion
    FROM Trabajador, Trabajo
    WHERE Trabajador.vacacion = Trabajo.id
 
    UNION ALL
 
    SELECT Trabajador.Id, Trabajador.Nombre, Trabajador.Apellidos, Hogar.Direccion
    FROM Trabajador, Hogar
    WHERE Trabajador.hogar = Hogar.id
) Trabajadores
GROUP BY Id

Si esta unión la envolvemos en otro select, podremos asignar el Group By para que agrupe los que tengan el mismo Id.

Bien, este post mas que informativo está destinado a los que se puedan encontrar con el problema de unir consultas y luego querer hacer un GROUP BY o un ORDER BY de la unión.

Espero que os haya sido de utilidad

Artículos relacionados

Mysql – Exportar una base de datos desde con... Si ya vimos el caso de importar una base de datos de grandes dimensiones, lo mismo nos puede pasar a la hora de exportar. Si necesitamos exportar base...
SQL – Listar registros duplicados o repetido... Cuando estamos trabajando con bases de datos con muchos registros, se puede producir muchos errores. Muchos de ellos es la duplicación de registros. H...
MySql – Borrar saltando restricción Foreign ... Cuando estamos trabajando en base de datos de pruebas (en local o servidor), en ocasiones y normalmente en base de datos muy pesadas, nos puede intere...
Mysql – Eliminar registros de una tabla que ... Muchas veces, sobretodo en importaciones de bases de datos, nos puede interesar crear una nueva tabla a partir de dos tablas existentes, o eliminar da...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*