【发布时间】:2021-09-30 22:02:42
【问题描述】:
这是一个愚蠢的问题,但我整天都在与它作斗争。
我有两张桌子。
products
+-----+---------+
| SKU | Quantity|
+-----+---------+
| ABC | 90 |
| DEF | 40 |
| XYZ | 33 |
+-----+---------+
orders
+-----+----------+
| SKU | OrderID |
+-----+----------+
| ABC | aaa |
| ABC | yyy |
| DEF | xxx |
| DEF | bbb |
| DEF | ccc |
+-----+----------+
我希望输出显示表 1 中的所有字段并匹配表 2 中的 SKU 计数的总和。如果表 2 中没有匹配项,它应该返回 null 或 0。所以输出应该是:
+-----+---------+-------+
| SKU | Quantity| Count +
+-----+---------+-------+
| ABC | 90 | 2 |
| DEF | 40 | 3 |
| XYZ | 33 | |
+-----+---------+-------+
我写了以下查询(我使用的是 Laravel,请原谅 Laravel 语法)
$orders=Orders::groupBy('orders.SKU')
->selectRaw('sum(orders.quantity) as quantity_sum, orders.SKU');
$ordersAllProducts = DB::table('products')
->leftJoinSub($orders, 'orders', function ($join) {
$join->on('products.SKU','=','orders.SKU');
})->get();
它几乎可以工作,但我的 SKU 为空,如下所示。
+-----+---------+-------+
| SKU | Quantity| Count +
+-----+---------+-------+
| ABC | 90 | 2 |
| DEF | 40 | 3 |
| | 33 | |
+-----+---------+-------+
【问题讨论】:
-
产品中的 SKU 是唯一的吗?
-
是的,SKU 是一个独特的字段。