簡體   English   中英

mysql返回行,其中鏈接表匹配兩組條件

[英]mysql return rows where link table matches two sets of conditions

我需要在訂單數據庫中搜索包含不同制造商產品組合的訂單。 本質上,我需要包含2個或多個項目的所有訂單的列表,其中一個項目來自制造商A,一個項目來自制造商B。我認為我可以在sku列上使用“ like”,因為它們的前綴為兩個字母生產廠家。 為了舉例,相關的表和列如下:

orders表具有一個order_id和一個create_date(unix時間戳-我在過去兩年中需要訂單-我可以處理這一部分,但如果有人感到慷慨,可以將其包括在內)

order_items表包括用於相關order_id和order_item_id的列。 它還包括一個product_sku。 SKU的看起來像MA-?????? 用於制造商A和MB-????? 對於制造商B。

我不是SQL專家,並且有一種感覺,它涉及到帶有count()函數的selects中的selects,但不確定從哪里開始。 任何幫助表示贊賞。

實際上找到答案的速度比我想的要快:

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

如果我不明白您想要什么,我會從表順序中選擇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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM