我需要在订单数据库中搜索包含来自不同制造商的商品组合的订单。基本上我需要一个包含2个或更多项目的订单列表,其中一个项目来自制造商A,一个项目来自制造商B. 我想我可以在sku专栏上使用'like',因为它们的前缀是代表制造商的两个字母。为了举例,相关的表格和列如下:
订单表有一个order_id和一个create_date(unix时间戳 - 我在过去两年需要订单 - 我可以处理这部分但包含它以防万一有人感到慷慨)
order_items表包含相关order_id的列和order_item_id。它还包括product_sku。 sku的看起来像MA - ??????制造商A和MB - ?????制造商B。
我不是一个SQL专家,并且感觉它涉及选择所涉及的count()函数,但不知道从哪里开始。任何帮助表示赞赏。
答案 0 :(得分:0)
实际上找到了比我想象的更快的答案:
SELECT order_id
FROM orders AS o
WHERE
o.order_id IN (select DISTINCT order_id FROM order_items WHERE order_item_sku LIKE 'MA-%')
AND
o.order_id IN (select DISTINCT order_id FROM order_items WHERE order_item_sku LIKE 'MB-%')
答案 1 :(得分:0)
如果我想要你想要的东西,我会从表订单中选择order_item_id,分组和统计,或者只按等等顺序选择:
SELECT COUNT(order_item_id), product_sku
FROM order
GROUP BY product_sku;
如果您想查看每个product_sku的所有order_item_id收集:
SELECT order_item_id, product_sku
FROM order
ORDER BY product_sku ASC;