考虑表order
,order_line
和product
。
order_line
包含order_id
列和product_id
。
我想找到包含{_ 1}} 1和其他product_category
的order_line的订单。 order_line结果的示例:
product_categories
必须存在第1类,以及其他类别。
我尝试了以下内容,但它没有帮助,这可能是我的逻辑错误:
id | order_id | product_category
----+----------+-------------------
6 | 5 | 1
7 | 5 | 2
答案 0 :(得分:0)
如果您想要其他类别以及“1”,请使用两个exists
:
SELECT ol.*
FROM order_line ol
WHERE EXISTS (select 1 from order_line ol2 where ol2.order_id = ol.order_id and product_category = 1) AND
EXISTS (select 1 from order_line ol2 where ol2.order_id = ol.order_id and product_category <> 1) ;
这几乎是您的问题陈述的直接翻译。
注意:如果您只是想要具有此条件的订单,我会使用group by
:
select ol.order_id, group_concat(distinct product_category) as categories
from orderline ol
group by ol.order_id
having sum(product_category = 1) > 0 and
sum(product_category <> 1) > 0;
但第一个版本提供了所有订单明细。