mysql返回链接表匹配两组条件的行

时间:2017-04-12 17:15:20

标签: mysql

我需要在订单数据库中搜索包含来自不同制造商的商品组合的订单。基本上我需要一个包含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()函数,但不知道从哪里开始。任何帮助表示赞赏。

2 个答案:

答案 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;
相关问题