ha ragione mysql. quando usi una UNION e vuoi campi dai nomi diversi non puoi fare

SELECT campo1 FROM tab1
UNION
SELECT campo2 FROM tab2

ma - pensando a valori numerici

SELECT SUM(campo1) as campo1, SUM(campo2) as campo2 FROM
(
SELECT campo1, 0 FROM tab1
UNION
SELECT 0, campo2 FROM tab2
)

adegua quindi la tua query