标题不能很好地描述它,我的问题:
我有2张桌子,一张桌子用于订购,另一张用于产品。 一个订单可以有n个产品与之关联。
我要选择那些订单,其中所有的关联产品的状态(产品属性)大于或等于x。 (所以我知道我的订单中的每个产品都是“就绪”的,可以进一步处理该订单)
每个订购的产品都有一个OrderID
有什么提示吗?
e:刚开始使用SQL,如果这是一个愚蠢的问题,请不要害我
答案 0 :(得分:0)
这是心态问题。
您必须找到问题的“双重”形式(->双重否定)。
您需要查找所有至少有一行尚未准备好的订单。
假设您的表很普通:
Order( ID ,bla,bla,bla)和 Order Line( orderID,row#,status,bla,bla)FK orderid引用订单。
您可以使用此存根:
Select *
from orders O
where not exists ( select * from order_line OL
where ol.orderID=O.orderID --binding with outer query
and status <> 'ready'
)
侧面注意:我的查询也会产生空订单,要对其进行过滤,只需将其添加到外部查询and exists (select * from orderline oe where oe.orderid=o.orderid)