如果满足第二个表中的要求,则从多个表中选择数据

时间:2019-01-17 16:00:37

标签: mysql sql select

标题不能很好地描述它,我的问题:

我有2张桌子,一张桌子用于订购,另一张用于产品。 一个订单可以有n个产品与之关联。

我要选择那些订单,其中所有的关联产品的状态(产品属性)大于或等于x。 (所以我知道我的订单中的每个产品都是“就绪”的,可以进一步处理该订单)

每个订购的产品都有一个OrderID

有什么提示吗?

e:刚开始使用SQL,如果这是一个愚蠢的问题,请不要害我

1 个答案:

答案 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)