2009-04-18 6 views
0

J'ai la requête suivante qui me donne toujours deux lignes. Je veux les regrouper en une ligne en utilisant tbluser.userid, est-il possible de grouper une union?Group Union

SELECT 
SUM(tblfooditem.calories) 
FROM tblfooditem 
INNER JOIN tbluser ON tblfooditem.userid = tbluser.userid 
WHERE tblfooditem.userid=?userid AND tblfooditem.date=?date 
GROUP BY tbluser.userid 
UNION 
SELECT 
SUM(tbladdedmealitem.calories) 
FROM tbladdedmeal 
INNER JOIN tbluser ON tbladdedmeal.userid = tbluser.userid 
WHERE tbladdedmeal.userid=?userid AND tbladdedmeal.date=?date 
GROUP BY tbluser.userid; 

Répondre

3

C'est possible.

select sum(s) from (
SELECT 
    SUM(tblfooditem.calories) S,tbl.userid 
    FROM tblfooditem 
    INNER JOIN tbluser ON tblfooditem.userid = tbluser.userid 
    WHERE tblfooditem.userid=?userid AND tblfooditem.date=?date 
    GROUP BY tbluser.userid 
    UNION 
    SELECT 
    SUM(tbladdedmealitem.calories) S,tbl.userid 
    FROM tbladdedmeal 
    INNER JOIN tbluser ON tbladdedmeal.userid = tbluser.userid 
    WHERE tbladdedmeal.userid=?userid AND tbladdedmeal.date=?date 
    GROUP BY tbluser.userid 
) Q 
group by Q.userid