2017-06-12 137 views
0

该DB有一个表格,即records。其中有product_idquantity,store_idlaravel - 在具有相同值的另一列下获得具有相似列值的行的小计

我需要获得属于某个store_id的那些行的数量总和,然后具有相同的product_id值。

例如,该表的值为:(2,3,4),(2,1,5),( 2,2,4)然后我需要将总计quantity和其他列从第一和第三行。第二行也将出现在结果中。

让我们假设控制器名称为RecordController,型号名称为Record

我该如何编写查询?

编辑:该表具有值:(2,3,4),(2,1,5),(1 2,2,4-

+0

所以,你想获得'product_id'分组的数量'count',其中'store_id'? – Ohgodwhy

+0

你期望什么结果? –

+0

@Ohgodwhy,对于某个'store_id',查询将查找相同的'product_ids',然后从这些行中添加'quantity'。其他列也应该可用 –

回答

0

它可以使用单个查询来完成。

试试这个: -

DB::table('records') 
    ->select('product_id',DB::raw('sum(quantity) as quantity'),'store_id') 
    ->groupBy('product_id') 
    ->groupBy('store_id') 
    ->get(); 

说明: 这个查询将获取的所有记录&他们组由product_id & store_id那样只会得到一个单列的单品中商店。然后它会在输出中显示sumquantity

更新: -

使用ORM: -

\App\YourModelName::select('product_id',DB::raw('sum(quantity) as quantity'),'store_id') 
    ->groupBy('product_id') 
    ->groupBy('store_id') 
    ->get(); 

但你需要写在任何情况下的原始查询,不能使用默认的ORM的功能做

+0

如何使用ORM编写查询? –

+0

让我试试它是否有效 –

+0

如何在查询中除了3以外的其他列? –

相关问题