我正在尝试根据一张表中的名称求和项目数量,然后对项目乘积求和。
我有两个桌子(酒吧和小酒馆),如图所示。
1:酒吧
id | name |cost|
1 item1 2000
2 item2 5000
2:饮料销售
id | drink | no_drinks | date
1 item2 2 2018-08-01
2 item1 2 2018-08-01
3 item2 2 2018-08-01
4 item2 1 2018-08-01
我的目的是要根据日期总计(5)和(1)假设(2)的项目2的no_drink进行总和,从那里我必须运行一个查询,该查询将从“ Bar”中获取item1和item2的成本”表。 我需要这样的结果
(5 * 5000)+(2 * 2000)= 29000
这里是我的脚本,关于连接的一切都可以。
1:Reportcontroler.php
$resx=DB::table('drinksales')
->join('bars','bars.name', '=' ,'drinksales.drink')
->where('date','LIKE','%'.$date.'%')
->get(array(
'bars.cost',
DB::raw('SUM(bars.cost) AS costs'),
DB::raw('SUM(drinksales.no_drinks) AS no_drinks')
));
if($resx){
foreach ($resx as $row) {
$datas = array(
'amount' => $row->costs,
'no_drinks' => $row->no_drinks
);
}
return View::make('reports.restaurantsreportcostd',$datas);
}
$datas=array(
'amount'=>'No money collected'
);
return View::make('reports.restaurantsreportcostd',$datas);
查询以上脚本后,我得到119000,这不是我想要的答案。
在这里查看文件
2:reports.restaurantsreportcostd
<p class="alert alert-success text-center">Total income {{$amount*$no_drinks}} /= </p>
请提供帮助,如果解释不当,请对不起
答案 0 :(得分:0)
使用group by语句,请尝试此操作。 SELECT SUM(Drinnksales.no_drinks * COST)
在此处插入您的联接代码GROUP BY Drinksales.Drink
答案 1 :(得分:0)
这算错了,因为它所做的就是将所有费用总计起来,然后将所有饮料总计并相乘。
我重新定义您的逻辑以实现您想要的结果,就像这样:
$resx = DB::table('drinksales')
->join('bars', 'bars.name', '=', 'drinksales.drink')
->where('date', 'LIKE', '%' . $date . '%')
->get();
$datas = array(
'amount' => 0,
'no_drinks' => 0,
'total_income' => 0
);
if ($resx) {
foreach ($resx as $row) {
$datas['amount']+= $row->cost;
$datas['no_drinks']+= $row->no_drinks;
$datas['total_income']+= $row->cost * $row->no_drinks;
}
} else {
$datas['amount'] = 'No money collected';
}
return View::make('reports.restaurantsreportcostd', $datas);
您现在可以直接使用我设置的其他变量直接获得总收入:
<p class="alert alert-success text-center">Total income {{ $total_income }} /= </p>