【发布时间】:2019-03-07 02:24:29
【问题描述】:
各位开发者您好, 我正在尝试将我的查询转换为雄辩的代码,但是当我在其他命令中使用“CASE”命令时,我决定将选择部分插入 DB::raw 但现在我遇到了一些语法错误或访问冲突:1055,这是我的sql:
SELECT pa.id_budget_total,pa.name,CASE WHEN co.budget IS null THEN pa.amount ELSE pa.amount - SUM(co.budget) END AS left
FROM budget_total pa LEFT JOIN convening co ON pa.id_budget_total = co.budget_total
where pa.status = 1 GROUP BY pa.name
我有点将其转换为 eloquent,但是当我添加 co.budget 时,它告诉我后面的错误代码 co.budget 不是 group by,是的,如果我在 groupBy 中添加它,它不会显示任何错误,但那d 改变整个结果。这是雄辩的代码:
budget_total::select(DB::raw("pa.id_budget_total,pa.name, CASE WHEN co.budget IS null THEN pa.amount ELSE pa.amount - SUM(co.budget) END AS restante"))
->from("budget_total as pa")->leftJoin("convocatoria as co","pa.id_budget_total","=","co.id_budget_total")->where("pa.status", 1)
->groupBy("pa.id_budget_total","pa.name","pa.amount")->get();
【问题讨论】:
-
请解释一下
CASE表达式背后的逻辑。 -
我正在获取所有相关的召集预算并从总预算中减去它们,但如果没有与总预算相关的召集预算,我只打印总预算(为了不t 得到一个 NULL 值)
-
是的,我已经在尝试了,谢谢
标签: mysql sql laravel eloquent