2

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

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

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|模板_ID|

模板

ID|Property_Descriptor_ID|名称|audit_id

Property_Descriptors

身份证| 名称|Default_Value|audit_id

谢谢!

4

1 回答 1

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

应该做的伎俩你需要清理一下结果以消除负面结果或添加 q2.default_value - q1.Howmuch > 0外部 WHERE 子句

于 2013-05-08T14:31:13.697 回答