2017-04-12 57 views
0

我需要搜索订单数据库以查看包含来自不同制造商的物料组合的订单。基本上,我需要一个包含2个或更多项目的订单,其中一个项目来自制造商A,另一个来自制造商B. 我想我可以在sku列上使用'like',因为它们的前缀是两个字母代表制造商。为了举例,相关的表和列如下:mysql返回链表匹配两组条件的行

订单表有一个order_id和一个create_date(unix timestamp - 我需要在过去两年的订单 - 我可以处理这部分,但包括它,以防万一任何人感到慷慨)

order_items表包含相关order_id和order_item_id的列。它还包括一个product_sku。 SKU的会像MA - ??????为制造商A和MB - ?????对于制造商B.

我不是一个SQL专家,并有一种感觉,它涉及选择涉及count()函数选择,但不知道从哪里开始。任何帮助表示赞赏。

+0

我才意识到,要获取ID本身,订单表是无关紧要的。一旦我可以检索匹配的order_ids列表,我可以操纵我需要的东西 - 所以我想这个问题是针对items表的。 – Scott

回答

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-%') 
0

如果我understend你想要什么,我就从订单表中选择ORDER_ITEM_ID,并通过ETC小组和计数,或仅顺序:

SELECT COUNT(order_item_id), product_sku 
    FROM order 
    GROUP BY product_sku; 

如果你想看到所有ORDER_ITEM_ID为每product_sku togather:

SELECT order_item_id, product_sku 
    FROM order 
    ORDER BY product_sku ASC; 
+0

目标是列出与这些订单相关的任何订单和所有项目,当这些项目包括两个或多个项目,其中一个以一个供应商的前缀开始,另一个以另一个供应商的前缀开始。我发现一个答案使用'IN'与发布后不久发现的另一个选择进行比较(我不认为我会发现任何速度很快,因为我不知道我在找什么)。 – Scott

相关问题