Sum in laravel 数据库查询
Sum in laravel db query
我需要在使用 join 时得到 ProductQTY groupBy ProductID 的总和,我在使用 [=12= 时总是出错], 附上我的代码
$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) QueryException
SQLSTATE[42000]: Syntax error or access violation: 1055 'fdis.pick_list_detail.sale_invoice_id' isn't in GROUP BY (SQL: 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
from pick_list_detail
inner join
sale_invoices
on pick_list_detail
.sale_invoice_id
=
sale_invoices
.id
inner join sale_invoice_detail
on
sale_invoice_detail
.sale_invoice_id
=
pick_list_detail
.sale_invoice_id
where
pick_list_detail
.pick_list_id
= 1 group by
sale_invoice_detail
.product_id
)
$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();
原始查询是我的解决方案。
我需要在使用 join 时得到 ProductQTY groupBy ProductID 的总和,我在使用 [=12= 时总是出错], 附上我的代码
$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) QueryException SQLSTATE[42000]: Syntax error or access violation: 1055 'fdis.pick_list_detail.sale_invoice_id' isn't in GROUP BY (SQL: 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
frompick_list_detail
inner joinsale_invoices
onpick_list_detail
.sale_invoice_id
=sale_invoices
.id
inner joinsale_invoice_detail
onsale_invoice_detail
.sale_invoice_id
=pick_list_detail
.sale_invoice_id
wherepick_list_detail
.pick_list_id
= 1 group bysale_invoice_detail
.product_id
)
$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();
原始查询是我的解决方案。