mysql - 通过另一个表的 id 在一个基于结果的组中对两个不同表的两列求和
问题描述
我有 3 张桌子:
用户:
id | account_name
-------------------|----------------------|
18 | panic |
存款:
id | user_id | amount
-------------------|---------------------------|
1 | 18 | 100
2 | 18 | 100
提款:
id | user_id | amount
------------------------|--------------------------------|
1 | 18 | 200
2 | 18 | 200
我试图得到这样的结果:
id | totalDeposits | totalWithdraws
------------------------|---------------------------|
18 | 200 | 400
现在,当我出于某种原因尝试获取总数时,它们会交叉相加,当然,如果没有行,它应该返回 0。
SELECT t0.id,IFNULL(SUM(t1.amount),0) AS totalWithdrawals,
IFNULL(SUM(t2.amount),0) AS totalDeposits
FROM users t0
LEFT OUTER JOIN withdrawals t1 ON (t0.id = t1.user_id)
LEFT OUTER JOIN deposits t2 ON (t0.id = t2.user_id)
GROUP BY t0.id
知道如何进行交叉连接,或者我在哪里总结错误?
解决方案
尝试这个-
SELECT A.id,
(SELECT SUM(amount) FROM Deposits WHERE user_id = A.id) totalDeposits,
(SELECT SUM(amount) FROM Withdrawals WHERE user_id = A.id) totalWithdraws
FROM users A
WHERE A.id = 18 -- WHERE can be removed to get all users details
推荐阅读
- node.js - 执行位于主机环境链接卷内的脚本
- firebase - 执行 Firebase google sign_in 时出错
- c++ - 按第一个元素推导初始化列表的类型
- python - 具有至少 3 个大写字母的正则表达式 Python
- php - Symfony 4.3 Mailer - “Symfony\Component\Mime\Header\Headers”类的名为“getAll”的未定义方法
- c++ - 结构不在内存中
- javascript - 方法函数如何从 vuex 商店调用变量?
- python - 如何更改 inlineformset_factory 中的模型参数?
- java - listView setAdapter 多次运行一个适配器
- react-native - 带有“粗体”、“斜体”、“下划线”文本选项的文本输入键盘类型 - ipad