MySQL,选择,比较 2 个表中的值



在我的数据库中,我想选择每个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

它将选择每个 construction_manual.name,只要storage_room中的第一个组件具有足够的数量。所以让我们说...

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 个表中是以下数据集。当我使用上面提到的查询时,我会得到以下结果:数据库。但是我应该无法建造一张桌子,因为没有足够的wooden_plates(木板而不是木板......UPS(


我想你想问的是忽略或排除任何没有足够的组件来满足构建的施工手册。 如果是这种情况,您可以执行以下操作(左联接也可以这样做(:

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);

相关内容

  • 没有找到相关文章

最新更新