我有以下查询:
select a.order_id, b.item_name, b.item_weight from orders a join items b on a.item_id = b.item_id
现在我的任务是。一个订单可以有多个项目。现在我必须查看订单中的每个项目,并选择订单,使其item_weight不超过50。
例如,上面的查询返回:
order_id , item_name, item_weight
1 , toy , 10
1 , plate , 30
1 , book , 60
2 , toy , 20
2 ,book , 30
2 , plate , 40
2 , apple , 10
答案应该是只选择订单id 2,因为它包含所有权重小于50的商品。
有很多方法可以做到这一点,其中一些取决于您的dbms。这个方法应该适用于大多数情况:
select a.order_id, b.item_name, b.item_weight
from orders a
join items b
on a.item_id = b.item_id
where a.order_id not in
(select a.order_id
from orders a
join items b
on a.item_id = b.item_id
where b.item_weight >= 50
)