比较2个独立的SQL查询的输出

时间:2013-05-08 14:15:49

标签: sql oracle

我正在尝试为库存系统编写查询。为了做到这一点,我必须计算一个表中的重复数,然后将其与从另一个表中获取的默认数量值进行比较。

以下是我目前正在处理的两个查询:

SELECT Template_ID, 
COUNT(Template_ID) AS Howmuch, t.name  
FROM consumables e, templates t 
Where t.consumable_type_id = '2410980'
GROUP BY template_id, t.name
HAVING ( COUNT(Template_ID) > 1 )

上面的查询考虑了每个独特的模板ID,并给出了一个重复数量的计数,它告诉我单个物质的数量。

   Select 
      property_descriptors.default_value, 
      templates.name 
   From 
     templates, 
     Property_descriptors 
   Where 
     templates.consumable_type_id = '858190' And 
     templates.audit_id = property_descriptors.audit_id And 
     property_descriptors.name = 'Reorder Point'

此查询查找我们希望在系统中拥有的每种物质的数量。

我的问题是我不知道比较2个查询的结果的方法。

理想情况下,我希望查询仅提供重复计数低于其默认值的物质(使用查询2找到)。

任何想法都将不胜感激!

这是表格架构供参考:

耗材

ID | Template_ID |

模板

ID | Property_Descriptor_ID |名称| audit_id

Property_Descriptors

ID |名称| DEFAULT_VALUE | audit_id

谢谢!

1 个答案:

答案 0 :(得分:2)

    SELECT  q1.name, q2.default_value - q1.Howmuch  FROM 
        (SELECT Template_ID, COUNT(Template_ID) AS Howmuch, t.name
           FROM consumables e, templates t 
           Where t.consumable_type_id = '2410980'
           GROUP BY template_id, t.name
           HAVING ( COUNT(Template_ID) > 1 )) q1, 
         (SELECT property_descriptors.default_value default_value, 
          templates.name  name
          FROM 
           templates, 
           Property_descriptors 
         WHERE
         templates.consumable_type_id = '858190' And 
         templates.audit_id = property_descriptors.audit_id And 
         property_descriptors.name = 'Reorder Point') q2
         where q1.name = q2.name

应该做的就是你需要清理结果以消除负面结果 或者在外部WHERE子句中添加q2.default_value - q1.Howmuch > 0