我想查找订单,其中多次使用产品名称。在此示例中,结果应为order_id 10
表格:
Orders
order_id
9
10
11
Order_details
order_id, product_id
9, 7
10, 5
10, 6
11, 6
11, 7
Products
product_id, product_name, price
5, potato, 4.99
6, potato, 7.5
7, orange, 7.99
答案 0 :(得分:2)
如果只需要订单,则可以比较具有有效产品名称的行数和不同产品名称的数目。如果所有产品名称都是唯一的,则计数是相同的。如果它们不同,则某处重复:
select ol.order_id
from order_lines ol join
products p
on ol.product_id = p.product_id
group by ol.order_id
having count(p.product_name) > count(distinct p.product_name)
答案 1 :(得分:0)
您可以在下面使用此
with Order_details(order_id, product_id) as
(
select 9,7 union all
select 10,5 union all
select 10,6 union all
select 11,6 union all
select 11,7
),
Products(product_id, product_name, price) as
(
select 5, 'potato', 4.99 union all
select 6, 'potato', 7.5 union all
select 7, 'orange', 7.99
)
select o.order_id, p.product_name
from order_details o
join products p on o.product_id = p.product_id
group by o.order_id, p.product_name
having count(p.product_name) > 1;
order_id product_name
-------- ------------
10 potato
P.S。 with..as
上面的结构取决于您的DBMS产品,如果不起作用,可能仅将其删除