[英]How to count mysql with join?
我正在使用laravel開發銷售儀表板,需要計算每天的銷售數量。 我有兩個表,產品和交易。 在產品中,我擁有所有產品,在交易中,我擁有所有銷售交易
有了這個查詢,我可以按product_name獲得銷售組的編號。
$dash = Transactions::select(DB::raw('`product_name` AS ProductName, COUNT(`cod_sale`) as `TotalSale`'))
->where('status_sale', '=', 'Finished')
->where('date_finished', '>=', $data)
->groupBy('product_name')
->get();
此查詢返回
[
{
"ProductName": "Product A",
"TotalSale": 15
},
{
"ProductName": "Product B",
"TotalSale": 2
},
{
"ProductName": "Product C",
"TotalSale": 1
},
{
"ProductName": "Product D",
"TotalSale": 9
}
]
如何退還未售出的產品以顯示零? 請記住,表中的交易只是銷售的產品,表中的產品是所有產品
我想這樣返回:
[
{
"ProductName": "Product A",
"TotalSale": 15
},
{
"ProductName": "Product B",
"TotalSale": 2
},
{
"ProductName": "Product C",
"TotalSale": 1
},
{
"ProductName": "Product D",
"TotalSale": 9
},
{
"ProductName": "Product E",
"TotalSale": 0
},
{
"ProductName": "Product F",
"TotalSale": 0
}
使用LEFT JOIN
:
Product::leftJoin('transactions', function($join) use($date) {
$join->on('products.id', '=', 'transactions.product_id')
->where('status_sale', 'Finished')
->where('date_finished', '>=', $date);
})
->groupBy('products.id')
->get([
'products.name as ProductName',
DB::raw('count(transactions.id) TotalSale')
]);
使用此代碼可能會幫助您
$dash = Transactions::select(DB::raw('`product_name` AS ProductName, COUNT(`cod_sale`) as `TotalSale`'))
->where('status_sale', '=', 'Finished')
->where('date_finished', '>=', $data)
->where(DB::raw('COUNT(`cod_sale`)' '>', 0)
->groupBy('product_name')
->get();
不幸的是,我無法提供任何提示,最終我學習了其他東西,這很有用! 但是我決定讓系統每天在表中插入所有銷售數量為0的產品,並將計數功能更改為SUM,因此它增加了某個產品的銷售量,而不增加行數。桌子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.