在 laravel 数据库查询中求和

Posted

技术标签:

【中文标题】在 laravel 数据库查询中求和【英文标题】:Sum in laravel db query 【发布时间】:2018-07-07 17:29:53 【问题描述】:

我在使用join时需要得到ProductQTY groupBy ProductID的总和,使用db::raw时总是出错,附上我的代码

$pick_list_items = DB::table('pick_list_detail')
                   ->where('pick_list_detail.pick_list_id',$id)
                   ->join('sale_invoices', 'pick_list_detail.sale_invoice_id','=','sale_invoices.id')
                   ->join('sale_invoice_detail', 'sale_invoice_detail.sale_invoice_id','=','pick_list_detail.sale_invoice_id')
                   ->select(['pick_list_detail.sale_invoice_id', 'sale_invoice_detail.product_id', 'sale_invoice_detail.product_qty', 'sale_invoice_detail.uom', 'sale_invoice_detail.uom_factor'])
                   ->sum('sale_invoice_detail.product_qty')
                   ->groupBy('sale_invoice_detail.product_id')
                   ->get();

我正在使用 laravel 5.4

这是错误

(2/2) 查询异常 SQLSTATE[42000]:语法错误或访问冲突:1055 'fdis.pick_list_detail.sale_invoice_id' 不在 GROUP BY 中(SQL:选择 pick_list_detail.sale_invoice_id, sale_invoice_detail.product_id, sale_invoice_detail.product_qty, sale_invoice_detail.uom, sale_invoice_detail.uom_factor from pick_list_detail 内部连接 sale_invoices pick_list_detail.sale_invoice_id = sale_invoices.id 内连接 sale_invoice_detail on sale_invoice_detail.sale_invoice_id = pick_list_detail.sale_invoice_id 在哪里 pick_list_detail.pick_list_id = 1 组 sale_invoice_detail.product_id)

【问题讨论】:

你的错误是什么 请提供一些相关代码 @Giovanni 错误已附加 @MahdiYounesi 错误添加 【参考方案1】:
    $sale_invoices = DB::table('pick_list_detail')
    ->select(DB::raw('sum(sale_invoice_detail.product_qty) as si_count, pick_list_detail.pick_list_id , sale_invoice_detail.product_id , sale_invoice_detail.uom, sale_invoice_detail.uom_factor '))
    ->where('pick_list_detail.pick_list_id',$id)
    ->join('sale_invoices', 'pick_list_detail.sale_invoice_id','=','sale_invoices.id')
    ->join('sale_invoice_detail', 'sale_invoice_detail.sale_invoice_id','=','pick_list_detail.sale_invoice_id')
    ->groupBy('pick_list_detail.pick_list_id')
    ->groupBy('sale_invoice_detail.product_id')
    ->groupBy('sale_invoice_detail.uom')
    ->groupBy('sale_invoice_detail.uom_factor')
    ->get();

原始查询是我的解决方案。

【讨论】:

以上是关于在 laravel 数据库查询中求和的主要内容,如果未能解决你的问题,请参考以下文章

使用连接和不同的 Laravel 求和查询

Laravel 查询生成器对多列求和

在 Laravel Eloquent 中求和并返回页面

关于查询,联接和求和的问题,给我返回错误

在 WordPress 数据库查询中加入/求和自定义字段

将计数和求和查询加入单个数据集