我有 3 張桌子、users、user_spents和user_incomes。
user_spents表格包含每個日期的user_incomes用戶活動。- 每個用戶可以在一個日期內進行多項活動。(例如
user可以在 2022-04-01 日期有多個支出或收入)。 - 用戶必須擁有或在給定日期不是強制性的
spentincome
我想選擇按日期分組和過濾的單個用戶的活動。
Sql Fiddle Link 和 sql 我到目前為止所嘗試的:http ://sqlfiddle.com/#!9/846c851/1
我究竟做錯了什么?你能給我一些建議嗎?
我想要實作的示例資料:
name spent income date
----------------------------------
Jack 8 12 2022-04-01
Jack 4 56 2022-04-02
Jack NULL 44 2022-04-03
Jack 7 NULL 2022-04-04
樣本資料。(也包含在 sql fiddle 中)
Users Table:
id name
1 Jack
User Spents:
id user_id spent date
1 1 2 2022-04-01
2 1 1 2022-04-01
3 1 5 2022-04-01
4 1 3 2022-04-02
5 1 1 2022-04-02
User Spents:
id user_id income date
1 1 44 2022-04-03
2 1 15 2022-04-02
3 1 41 2022-04-02
4 1 12 2022-04-01
5 2 54 2022-04-01
任何幫助將不勝感激。謝謝。
uj5u.com熱心網友回復:
您可以使用UNION ALL獲取所有行,user_spents然后user_incomes加入users聚合:
SELECT u.id, u.name,
SUM(t.spent) spent,
SUM(t.income) income,
t.date
FROM users u
INNER JOIN (
SELECT user_id, spent, null income, date FROM user_spents
UNION ALL
SELECT user_id, null, income, date FROM user_incomes
) t ON t.user_id = u.id
WHERE u.name = 'Jack' -- remove this condition to get results for all users
GROUP BY u.id, t.date;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/456409.html
上一篇:SQL-如果陳述句“這與sql_mode=only_full_group_by不兼容”
下一篇:Mysql將兩個查詢合并為一個
