0
我有三个表;一个存储用户,一个存储每个用户的费用和每个用户的第三个表格返回。每个都由用户连接。但是有很多用户不使用该服务,所以我很想避免不会扫描整个用户表的解决方案。返回两个不同表中相同成员的SUM值
我正在使用MySQL btw。
users: id, name
expenses: id,userid,amount,date
returns:id,userid,amount
的样本数据是:
users:
1 Sosuna
2 Mike
expenses:
1 1 100 2017-01-01
2 1 20 2017-01-13
3 2 50 2017-02-13
returns:
1 1 20
2 1 10
3 1 30
4 1 10
现在预期的输出仅仅是其中的一个组合。用户不能存在于回报中,而不存在开支,寿。
user_id name total_expenses total_returns
1 Sosuna 120 70
2 Mike 50 0
我试过了几个查询,但都没有工作。这个UNION ALL查询有效,但输出结果不是我们想要的。我希望有兴田输出,而无需使用任何前端的东西:
SELECT SUM(amount) as total_given,userid,'expense' as source FROM `expenses` GROUP BY userid,source
UNION ALL
SELECT SUM(amount) as total_returned,userid,'returnedback' as source FROM returns GROUP BY userid,source ORDER BY userid,source
它确实有效,但它看起来比我想要的要慢。我有近30万用户。 –