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萬用戶。 –