- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为彼此共享账单的人创建一个小型自动结算程序网络应用程序。
举个简单的例子,如果 Sam、Bill 和 Jim 都住在一起并共享共同的账单,例如电费、煤气费和宽带费用,他们应该能够将每笔交易输入网络应用程序,然后应用程序自动计算谁应该向谁支付什么。
有两个表与这个问题有关:'transactions' 和 'transactionusers'。
交易: ID、用户 ID、零售商、商品、日期
交易用户 ID、交易ID、金额、用户ID
当 Sam 为电费(90 美元)添加一条“交易”记录并将金额平均分配给室友时,3 条记录将添加到“交易用户”表中。
我希望能够编写一个 SQL 查询来计算所有用户之间所有交易的总和,然后取走反向交易(例如,如果 Sam 欠 Bill $50,Bill 欠 Sam $20,那么结算就是 Bill欠山姆 30 美元)
我当前的查询允许您总结每对用户之间的总交易值(value),但不带走反向交易 - 非常感谢任何帮助:
SELECT transactionusers.userID AS debtor, SUM(amount) AS owes, transactions.userID AS toUser FROM transactionusers
INNER JOIN transactions ON transactions.ID = transactionusers.transactionID
WHERE transactions.userID <> transactionusers.userID
GROUP BY transactionusers.userID, transactions.userID
示例数据
假设 UserIDs 是 Sam (1), Bill (2), Jim (3)
交易:
1, 1, 'Electricity Co', 'Electricity Bill'
2, 2, 'Gas Co', 'Gas Bill'
3, 3, 'Broadband Co', 'Broadband Charge'
交易用户:
1, 1, 30, 1
2, 1, 30, 2
3, 1, 30, 3
4, 2, 20, 1
5, 2, 20, 2
6, 2, 20, 3
7, 3, 5, 1
8、3、5、2
9, 3, 5, 3
示例记录中没有显示的是在用户之间不平等地分摊账单的能力;例如:如果吉姆在这所房子里多住一个月,他可能会承担更高部分的账单
最佳答案
你的查询很好,你只需要对同一个查询进行连接并扣除结果:
SELECT transactionusers.userID AS debtor, IF(SUM(amount)-r.owes < 0, 0, SUM(amount)-r.owes) AS owes, transactions.userID AS toUser FROM transactionusers
INNER JOIN transactions ON transactions.ID = transactionusers.transactionID
LEFT JOIN (
SELECT transactionusers.userID AS debtor, SUM(amount) AS owes, transactions.userID AS toUser FROM transactionusers
INNER JOIN transactions ON transactions.ID = transactionusers.transactionID
WHERE transactions.userID <> transactionusers.userID
GROUP BY transactionusers.userID, transactions.userID
) r ON r.debtor = transactions.userID AND r.toUser = transactionusers.userID
WHERE transactions.userID <> transactionusers.userID
GROUP BY transactionusers.userID, transactions.userID
关于MySQL事务自动结算器计算查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15703211/
我有一个 MySQL 数据库,其中包含订单表和具有可用库存的零件号表。 例如 ==Orders Table== part_number order_date qty ==Stock Table== p
我正在使用 Libgdx + Android Studio 并尝试实现 Google Play Billing。我按照 here 中的说明进行操作.我修改了我的依赖项,如示例所示: dependenc
背景:我们有一个电视应用程序,它提供每月订阅作为其唯一的应用程序内项目。 我主要是在寻找我认为是真实的确认: 从 Google Play 计费库 2.0 版开始,就有一种称为待定购买的东西。主要的实际
我正在尝试集成 Google Play 结算。 这是我的 onCreate : private final static String TAG = "MainActivity" ; priva
我遵循了 Google 开发者文档中的所有最佳实践:https://developer.android.com/google/play/billing/billing_library_overview
我想知道文档是否将使用 ProGuard 的含义错误(相反)? 来源:https://developer.android.com/google/play/billing/billing_library
编辑:因为有些人仍在检查这个线程,我想提一下,这是非常过时的,因为它是关于应用程序购买中的 v2,现在已弃用。请查看latest (目前是 v3)文档,非常简单 关于这个问题有很多话题,我想我理解这个
在 2020 年 11 月之前,Google Play 上的 Android 应用必须管理“帐户保留”状态。 https://developer.android.com/distribute/play
我创建了一个带有应用内计费的测试应用。将其上传到 google play 并将其发送给 beta 测试人员。当他们尝试购买时,他们会收到 Error retrieving information fr
我是一名优秀的程序员,十分优秀!