php - 表列的两个内部连接到不同的表
问题描述
我正在开发一个贷款系统,在贷款到期时,资金加上利息从借款人的账户转移到贷方。然而,这只有在借款人有足够的钱这样做的情况下才会发生,否则到目前为止什么都不会发生。
我有一张桌子,里面有不同的用户和他们的现金。
USERS
+--id--+--name--+--group--+--cash-+
另一个包含每笔贷款的详细信息。
LOANS
+--LoanId--+--Lender--+--lenderId--+--Borrower--+--borrowerId--+--principal--+--rate--+--term-+--due_date--+
我从借款人那里扣款的代码(如果借款人有足够的钱)是:
$sql = "UPDATE users AS u
INNER JOIN (
SELECT l.borrowerId, SUM(l.principal + ((l.principal*l.rate*l.term)/1200)) AS total_due
FROM loans AS l
WHERE l.due_date = '2019-03-24'
GROUP BY l.borrowerId
) AS d
ON d.borrowerId = u.id
SET u.cash = CASE WHEN u.cash > d.total_due THEN u.cash - d.total_due ELSE u.cash END";
它工作得很好,但是当我尝试从借款人中扣除并向贷方添加资金时,我发现 u.cash > d.total_due 存在问题,因为它可能同时引用了贷方和借款人。
我已经尝试过了,但它不起作用:
$sql = "UPDATE users AS u
INNER JOIN (
SELECT l.lenderId, SUM(l.principal + ((l.principal*l.rate*l.term)/1200)) AS total_due
FROM loans AS l
WHERE l.due_date = '2019-03-24'
GROUP BY l.lenderId
) AS d
ON d.lenderId = u.id
INNER JOIN (
SELECT l.borrowerId
FROM loans AS l
WHERE l.LoanId = d.LoanId
GROUP BY l.lenderId
ON d.borrowerId = u.id
) AS b
SET u.cash = CASE WHEN b.cash > d.total_due THEN u.cash + d.total_due ELSE u.cash END";
我非常感谢您在这方面的帮助。提前致谢!
解决方案
推荐阅读
- docker-compose - 使用 Docker Compose 设置 Prometheus
- reactjs - Material-UI:如何在 TextField 标签中添加图标?
- coordinates - 定向问题笛卡尔坐标到俯仰滚动偏航
- c# - 我将如何检查 e.item 是否与 collectionviewsource 中的对象相同?
- c# - 使用 C#/.NET 从白色背景图像(A4 纸)中提取对象(签名)?
- python - 使用“del”删除列表项不起作用
- azure-active-directory - 使用 Azure AD 登录 Web 应用程序时出现可怕的 AADSTS50011 回复 url 错误 - 在 localhost 上运行良好
- r - 添加 R 包作者而不联系他们
- python - pip install gsw 失败,找不到 gswteos-10.h 文件
- python-3.x - python3中的打开函数不写文本