En un hilo anterior en el foro de impresión, comenté (aunque con otras palabras) que cuando me encuentro con este problema (el tener que hacer UNION) lo resuelvo creando tablas temporales
Código:
create temporary table tabla (campos)
insert into tabla select campos from XXX etc
insert into tabla select campos from YYY ect
y luego trabajo con esa tabla temporal tal como deseo, GROUP BY, WHERE... en fin lo que necesito de ella.
En tiempo de diseño conviene hacer esa tabla temporal permanente, y luego, cuando ya lo tienes diseñado, hacerla temporal
Es una solución diferente a la que planteas pero que a la postre te resuelve el problema.
Ventajas: Cuando hay que añadir otra tabla diferente, la programación está prácticamente hecha.