请看这张照片
http://i.stack.imgur.com/A2RB2.jpg
我想要
这就是我的查询
SELECT uid,SUM(money) FROM come
INNER JOIN emp ON(come.uid = emp.id)
WHERE emp.statue=1
GROUP BY come.uid
UNION
SELECT uid,SUM(money) FROM `leave`
INNER JOIN emp ON ( leave.uid = emp.id )
GROUP BY leave.uid
结果是这张图片
答案 0 :(得分:0)
我们走了:
SELECT q1.uid,SUM(q1.l),SUM(q1.c) FROM
(
SELECT uid,0 as l,SUM(money) as c FROM come
INNER JOIN emp ON (come.uid = emp.id)
WHERE emp.statue=1 GROUP BY come.uid
UNION ALL
SELECT uid,SUM(money) as l,0 as c FROM leave
INNER JOIN emp ON ( leave.uid = emp.id ) GROUP BY leave.uid
) q1
GROUP BY uid
答案 1 :(得分:0)
试试这个
select uid,sum(ComeTot),sum(LeaveTot)
from
(
SELECT uid,SUM(money) as ComeTot ,0 as LeaveTot
FROM come
INNER JOIN emp ON(come.uid = emp.id) WHERE emp.statue=1
GROUP BY come.uid
UNION
SELECT uid,0 ,SUM(money) FROM leave
INNER JOIN emp ON ( leave.uid = emp.id )
GROUP BY leave.uid
) xx
GROUP BY xx.uid
我没有在这台电脑上安装mySQL,但这应该让你接近。根据上述结果,您可能需要将整个查询包含在另一个组中...
答案 2 :(得分:0)
另一种方法(没有经过测试,所以让我知道它是否会爆炸):
SELECT emp.id, IF(emp.statue=1, c.sumCome, 0) AS sumCome, l.sumLeave
FROM emp
LEFT JOIN (SELECT uid, SUM(money) AS sumCome
FROM come
GROUP BY uid
) c ON emp.id = c.uid
LEFT JOIN (SELECT uid, SUM(money) AS sumLeave
FROM leave
GROUP BY uid
) l ON emp.id = l.uid
我不知道哪个比Kevin更快。您可能希望explain
他们俩都看到。