标题没有很好地描述它,我的问题:
我有两张表,一张用于订单,另一张用于产品。 一个订单可以有 n 个与其关联的产品。
我想选择那些所有其关联产品的状态(产品属性)大于或等于 x 的订单。 (所以我知道我订单的每件产品都已“准备就绪”,并且可以进一步处理订单)
每个订购的产品都有一个 OrderID
有什么建议吗?
e:刚开始使用 SQL,如果这是一个愚蠢的问题,请不要批评我
最佳答案
这是一个心态问题。
您必须找到问题的“双重”形式(->双重否定)。
您需要找到至少有一行未准备好的所有订单。
假设您的表格是通用的:
订单(ID,bla,bla,bla)和订单行(orderID, row#, status, bla, bla) FK orderid 引用订单。
您可以使用此 stub :
Select *
from orders O
where not exists ( select * from order_line OL
where ol.orderID=O.orderID --binding with outer query
and status <> 'ready'
)
旁注:我的查询也会生成空订单,要过滤它们,只需添加到外部查询并存在(从订单行 oe 中选择 *,其中 oe.orderid=o.orderid)
关于mysql - 如果第二个表满足要求,则从多个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239758/