在我的database我想选择每个construction_manual
where storage_room.quantity > component.quantity
但是当我使用时:
SELECT construction_manual.name
FROM construction_manual cm, construction_manual_component cmc, component, storage_room
WHERE cm.ID = cmc.construction_manual_ID
AND cmc.component_ID = component.ID
AND component.storage_room_ID = storage_room.ID
AND storage_room.quantity > component.quantity
只要storage_room中的第一个组件有足够的数量,它就会选择每个construction_manual.name。 所以,让我们说......
construction_manual.1 needs
component.A -> quantity 5
component.B -> quantity 10
在储藏室里有:
component.A -> quantity 6
component.B -> quantity 0
虽然存储空间不足,但会选择construction_manual.1
。如何仅选择storage_room中有足够组件的construction_manuals
?
编辑:
在我的4个表中是以下数据集。当我使用上面提到的查询时,我将得到以下结果:database。但我不能建造一张桌子,因为没有足够的木板(木板而不是木板)......
答案 0 :(得分:0)
我认为您要问的是忽略或排除任何没有足够组件来满足构建的构造手册。如果是这样的话,你可以做类似下面的事情(左连接也会这样做):
select distinct cm.name as construction_manual
from construction_manual cm
join construction_manual_component cmc
on cmc.construction_manual_ID = cm.ID
join component c
on c.ID = cmc.component_ID
join storage_room sr
on sr.ID = c.storage_room_ID
where sr.quantity > c.quantity
and cm.ID not in (select cm.ID
from construction_manual cm
join construction_manual_component cmc
on cmc.construction_manual_ID = cm.ID
join component c
on c.ID = cmc.component_ID
join storage_room sr
on sr.ID = c.storage_room_ID
where sr.quantity < c.quantity);