【发布时间】:2021-03-11 18:13:29
【问题描述】:
我想计算支付给每个用户的金额。 这可能是否定的。简要说明:
MustPay = AmountTaken - AmountPaid
我无法编写 sql 查询。
SELECT users.Name, users.Surname,
SUM(takenfrom.AmountTaken) - SUM(paid.AmountPaid) AS MustPay
FROM users
LEFT JOIN takenfrom ON takenfrom.UserId = users.UserId
LEFT JOIN paid ON paid.UserId = users.UserId
GROUP BY users.UserId
表格:
FIRST TABLE USERS
| UserId | Name | Surname |
| 1 | foo | boo |
| 2 | f | b |
SECOND TABLE TAKENFROM
| TakenFromId | UserId | AmountTaken|
| 1 | 1 | 100 |
| 2 | 2 | 200 |
THIRD TABLE PAID
| PaidId | UserId | AmountPaid|
| 1 | 2 | 50 |
| 2 | 2 | 50 |
RESULT TABLE
| Name | Surname| MustPay |
| foo | boo | 100 |
| f | b | 100 |
【问题讨论】:
-
你试过什么?你知道如何
JOIN表吗?这里有一个提示,你需要一个LEFT JOIN来代表PAID。 -
我尝试了左连接。我认为我应该在取自和付费表中使用完全连接。但我没有成功。 @RocketHazmat
-
你能显示你试过的查询吗?
-
SELECT users.Name, users.Surname, SUM(takenfrom.AmountTaken) - SUM(paid.AmountPaid) AS MustPay FROM users LEFT JOIN takefrom ON takefrom.UserId = users.UserId LEFT JOINpaid ONpaid .UserId = users.UserId GROUP BY users.UserId @RocketHazmat
-
注意:phpMyAdmin 只是一个数据库客户端。它几乎与数据库本身或您正在运行的查询无关。在这里不相关。