我正在尝试为库存系统编写查询。为了做到这一点,我必须计算一个表中的重复数,然后将其与从另一个表中获取的默认数量值进行比较。
以下是我目前正在处理的两个查询:
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
ID |名称| DEFAULT_VALUE | audit_id
谢谢!
答案 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