如何在所有批次符合条件的情况下下载订单?

时间:2018-05-21 04:51:56

标签: jquery sql sql-server join

我在mssql数据库中有两个表:orders和batch。每个订单可以有很多批次。成本保留在每批中。我想提取所有订单,其中每批的成本高于例如100.如果订单的任何部分成本不高于100,这将取消订单的资格。是否可以在一个查询中执行此操作?

2 个答案:

答案 0 :(得分:1)

一种简单的方法是按顺序使用聚合来检查每个批次:

SELECT o.id
FROM orders o
INNER JOIN batches b
    ON o.batch_id = b.id
GROUP BY o.id
HAVING COUNT(CASE WHEN b.cost <= 100 THEN 1 END) = 0;

答案 1 :(得分:0)

我认为最简单的方法是使用MIN()

SELECT b.order_id
FROM batches b
GROUP BY b.order_id
HAVING MIN(b.cost) >= 100;

如果您需要订单信息:

select o.*
from orders o
where not exists (select 1 from batches b where b.order_id = o.order_id and b.cost < 100);