Laravel group by和SUM

时间:2014-07-25 12:12:31

标签: mysql laravel group-by eloquent

无法理解这一点,我可能没有帮助我没有任何SQL小组。经验。

我有一个包含transaction_type列和amount列的表格。基本上我正在尝试使用SQL / Eloquent在单个查询中获取以下内容(如果可能,我知道这不是&s; 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'

1 个答案:

答案 0 :(得分:0)

我无法用口才帮助你,但你的查询应该是这样的:

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;

最容易的是,如果你找到一种方法只是用雄辩的方式执行一个查询。永远不明白为什么有人想要将一个好的可读查询转换为框架的一些“改进的”语法。