MySQL,选择,比较2个表

时间:2017-03-27 17:50:00

标签: mysql database select compare heidisql

在我的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。但我不能建造一张桌子,因为没有足够的木板(木板而不是木板)......

1 个答案:

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