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...
Mysql Tips – Mayúsculas (Ucase) y reemplazar... Durante un proyecto puedes encontrarte con imprevistos. Imaginad que una vez almacenado los datos de nuestros clientes en la base de datos, nos dicen ...
MySql – Eliminar registro saltando claves fo... En ocasiones nos enfrentamos a casos puntuales en los que valoras si arriesgarte o no. Una de ellas es la eliminación de registros en un motor de base...
MySql – Modificar un texto determinado en el... La sentencia para modificar un texto determinado en un camp en Mysql es: UPDATE tabla SET campo = replace(campo, "texto a modificar", "texto nuev...

Deja un comentario

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

*