【发布时间】:2021-08-03 02:17:12
【问题描述】:
我有以下疑问:
$ordersAllProducts=Product::groupBy('products.SKU')
->selectRaw('products.SKU,
(CASE
WHEN sum(orders.quantity)>1 THEN sum(orders.quantity)
ELSE 0
END) as quantity_sum')
->leftjoin('orders','products.SKU','=','orders.SKU')
->get();
一切都很好,但我需要返回特定日期之间的 orders.quantity 的总和。
我试过这段代码:
$ordersAllProducts=Product::groupBy('products.SKU')
->selectRaw('products.SKU,
(CASE
WHEN sum(orders.quantity)>1 THEN sum(orders.quantity)
ELSE 0
END) as quantity_sum')
->whereBetween('date', [$from, $toTime->format('Y-m-d H:i:s')])
->leftjoin('orders','products.SKU','=','orders.SKU')
->get();
效果很好,但突然之间,并非产品(左表)中的所有字段都已连接,即
Before Between Dates(显示所有日期的数量总和):
+-----+--------+
|SKU |Quantity|
|ABC | 10 |
|DEF | 20 |
|XYZ | 40 |
+-----+--------+
After Between Dates(现在 DEF 在日期之间没有订单)
+-----+--------+
|SKU |Quantity|
|ABC | 8 |
|XYZ | 14 |
+-----+--------+
我想要的输出如下(DEF 显示 0)
+-----+--------+
|SKU |Quantity|
|ABC | 8 |
|DEF | 0 |
|XYZ | 14 |
+-----+--------+
非常感谢任何帮助!
【问题讨论】: