gpt4 book ai didi

mysql - Eloquent orm或sql语句

转载 作者:行者123 更新时间:2023-11-30 00:16:47 25 4
gpt4 key购买 nike

我正在尝试从交易表中获取当天的借方总额、贷方总额和可用余额。

到目前为止我已经尝试过......

        SELECT
sum(credit),
sum(debit),
sum(credit) - sum(debit) as remaining_balance
FROM transactions
WHERE user_id = 2
group by created_at;

它没有给出正确的结果。

SQL FIDDLE...

http://sqlfiddle.com/#!2/25a27/2

例如,我想要获得银行/ Paypal 对账单等结果...

Date  - Debit - Credit - Balance
05/11 - 2.20 - - 7.3
05/10 - - 1.5 - 9.5
05/06 - - 2.5 - 8
05/05 - - 5.5 - 5.5

我正在使用 laravel eloquent orm,所以如果可以通过 ORM 实现,这对我来说是一个很好的建议。谢谢

最佳答案

您可以使用相当简单的 JOIN 来解决它;

SELECT DATE(a.created_at) date, a.debit, a.credit, 
SUM(b.credit - b.debit) balance
FROM transactions a
LEFT JOIN transactions b
ON DATE(a.created_at) >= DATE(b.created_at)
GROUP BY DATE(created_at)
ORDER BY DATE(created_at) DESC

An SQLfiddle to test with .

这里的问题是 JOIN 条件和 GROUP BY 条件使用在字段上计算的值,而不是使用字段本身。这将限制索引的使用,并使大量数据的查询变得非常慢。

解决方案是添加一个单独的 DATE 字段来保存交易日期。这将允许 JOIN/GROUP BY 直接在字段上工作,并且可以更有效地使用索引。

关于mysql - Eloquent orm或sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23592329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com