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

Información relacionada

Deja un comentario

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

*