这里是入门级SQL学习者。
以下是我的数据片段。它包含某些订单的ID,以及该订单中产品的ID以及该特定产品的所有可能供应商的ID。它是内部联接的结果,数据也存在于单独且冗余度较低的表中。
我的问题是:如何选择至少三种不同产品的所有订单的Order_ID
个共享至少一个共同供应商?
我用星号标记了符合这些标准的数据:
order_ID product_ID supplier_ID
10191* 00011 1088
10191* 00011 1212
10191* 00011 1774
10191* 00011** 3219***
10191* 00013 1212
10191* 00013** 3219***
10191* 00033 1001
10191* 00033** 3219***
10191* 00032 0061
102452 00013 1212
102452 00013 3219
102452 00027 1774
10297 00033 1001
10297 00033 3219
103067 00033 1001
103067 00033 3219
所以结果应该是
Order_ID
10191
提前谢谢!
这是产生此表的SQL代码
select
OI.order_ID, S.product_ID, S.supplier_ID
from
Orders_Items OI
inner join
Supplies S on OI.product_ID = S.product_ID
group by
OI.order_ID, S.product_ID, S.supplier_ID
答案 0 :(得分:0)
你可以尝试在查询选择结果上应用on count(distinct product_id)> = 3
,
答案 1 :(得分:0)
您可能会使用此查询获得与scaisEdge相同的结果
SELECT OI.order_ID
FROM Orders_Items OI
INNER JOIN Supplies S
ON OI.product_ID=S.product_ID
GROUP BY OI.order_ID, S.supplier_ID
HAVING COUNT(distinct t.product_id) >= 3