我在从两个表中获取某个字段的总和时遇到问题。
首先,这是我的查询。
//Getting of Cost of Goods Sold (Menus)
$totalMenuCost = DB::raw('(SUM(orders.qty * orders.cost)) as cost');
$yearMenuSold = DB::raw('YEAR(orders.created_at) as year');
$menuscost = DB::table('orders')
->where('status', 'served')
->select($totalMenuCost, $yearMenuSold);
//Getting of Cost of Goods Sold (Items)
$totalItemCost = DB::raw('(SUM(purchases.qty * purchases.cost)) as cost');
$yearItemSold = DB::raw('YEAR(purchases.created_at) as year');
$itemcost = DB::table('purchases')
->where('status', 'served')
->union($menuscost)
->select($totalItemCost, $yearItemSold)
->get();
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时return $itemcost
。它返回两行:
[
{
cost: "792.00",
year: 2017
},
{
cost: "1700.00",
year: 2017
}
]
Run Code Online (Sandbox Code Playgroud)
我试图让它返回一行但添加它,如下所示:
[
{
cost: "2492.00", // that's 1,700 + 792
year: 2017
}
]
Run Code Online (Sandbox Code Playgroud)
$itemcost = DB::table('purchases')
->where('status', 'served')
->union($menuscost)
->select($totalItemCost, $yearItemSold)
->get();
Run Code Online (Sandbox Code Playgroud)
在您的示例中,您只需从其他表 ($menuscost) 中选择 $totalItemCost、$yearItemSold 和并集。
所以这不会将结果相加。
///////////尝试以这种格式更改您的查询
select column1,sum(column2) total
from
(
select column1,column2
from Table1
union all
select column1,column2
from Table2
) t
group by column1
Run Code Online (Sandbox Code Playgroud)
希望这有帮助..如果需要更多帮助,请告诉我。
归档时间: |
|
查看次数: |
2683 次 |
最近记录: |