I have two basic queries which I need to sum the totals of:
Select hours, sum(hours) FROM table WHERE name='xxx' and Description='Worked'
Select hours2, sum(hours2) FROM table WHERE name='xxx' and Description2='Worked'
I've tried UNION and it will get me the totals of each query but it will not combine them.
Table setup is:
- ID
- name
- hours
- description
- hours2
- description2
I need to correlate hours to description and hours2 to description2 which is why I have the two different queries. I need to sum the totals of hours and hours2.
First of all, you missed group by, so even though mysql doesn't complain about it, you hours and hours2 values are meaningless.
Secondly, you the result of UNION can be put in derived subquery, so you will have the desired total :
SELECT SUM(hr) FROM
(
Select sum(hours) as hr FROM table WHERE name='xxx' and Description='Worked'
UNION ALL
Select sum(hours2) as hr FROM table WHERE name='xxx' and Description2='Worked'
)a
You would need to place your union into a subquery:
SELECT Hours,
SUM(Hours) AS Hours,
SUM(Hours2) AS Hours2
FROM ( SELECT Hours,
SUM(Hours) AS Hours,
0 AS Hours2
FROM Table
WHERE Name = 'xxx'
AND Description = 'Worked'
GROUP BY Hours
UNION ALL
SELECT Hours2,
0 AS Hours,
SUM(Hours2) AS Hours
FROM Table
WHERE Name = 'xxx'
AND Description2 = 'Worked'
GROUP BY Hours2
) t
GROUP BY Hours;
来源:https://stackoverflow.com/questions/6685517/sum-totals-of-two-queries