【发布时间】:2012-09-17 00:36:00
【问题描述】:
我有一个 MySQL 表,如下所示:
debts
--------------------------
owed_by | owed_to | amount
--------|---------|-------
Alice | Bob | 5
Bob | Jane | 10
Alice | Jane | 10
Jane | Bob | 5
是否可以在 MySQL 中编写一个查询来返回每个人所欠的总额?他们欠谁并不重要,我只想归还每个人和(欠的人总数 - 欠的人总数)
得到欠款很容易
SELECT `owed_by`, SUM(`amount`) as 'Total Debt'
FROM `debts`
GROUP BY `owed_by`
ORDER BY SUM(`amount`) DESC
但我不知道如何减去他们的欠款。
此外,作为一般规则,在 MySQL(如果可能)或 PHP 中执行这样的操作更好吗?
这是我的示例数据的 SQL Fiddle:http://sqlfiddle.com/#!2/dd7cf/1
【问题讨论】:
-
语言不是很流利,但你不能抓住桌子的两个不同视图吗?
ViewOwed和ViewOwes每个都有名称列和金额列之一。在每一列中按名称独立汇总金额,然后从另一个中减去一个。 -
我也不是最流利的,但我会看看意见
-
我不知道官方是否规定在 MySQL 或 PHP 中执行此操作更好,但我一直认为在 MySQL 中执行此操作会更好,就像您尝试做的那样。