【问题标题】:Laravel group by and SUMLaravel group by 和 SUM
【发布时间】:2014-07-25 12:12:31
【问题描述】:

无法理解这一点,这可能对我没有任何 SQL 'group by' 经验没有帮助。

我有一个表,它有一个 transaction_type 列和一个 amount 列。基本上我正在尝试使用 SQL/Eloquent 在单个查询中获取以下内容(如果可能,我知道这不是 sql):

add = SUM(amount) where transaction_type == 1
delete = SUM(amount) WHERE transaction_type == 2
return from MySQL: add-delete

我假设这将使用 groupby 完成,但尽管我尽了最大努力,但我还是无法通过阅读 sql 文档找到解决方案。

我想我已经使用纯 SQL 得到了它,但是我如何将它转换为 Eloquent:

SELECT `transaction_type`, SUM(`amount`) FROM `credit_logs` WHERE `to_group_id` = '1'

【问题讨论】:

  • 那你到底想做什么?

标签: mysql laravel group-by eloquent


【解决方案1】:

我无法帮助你雄辩,但你的查询应该是这样的:

SELECT
SUM(CASE WHEN transaction_type = 1 THEN amount ELSE NULL END)
-
SUM(CASE WHEN transaction_type = 2 THEN amount ELSE NULL END)
FROM credit_logs
WHERE to_group_id = 1;

或对于您希望分组的所有 ID:

SELECT
SUM(CASE WHEN transaction_type = 1 THEN amount ELSE NULL END)
-
SUM(CASE WHEN transaction_type = 2 THEN amount ELSE NULL END)
FROM credit_logs
GROUP BY to_group_id;

最简单的方法是,如果您能找到一种方法来用 eloquent 执行查询。永远不明白为什么有人想将一个可读性很好的查询转换为框架的一些“改进”语法。

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2021-05-09
    • 2016-06-21
    相关资源
    最近更新 更多