2016-10-31 38 views
-1

复原通知我有一个store表具有productNameproductNumberstoredInBranchblockNumberquantitynotifyInSQL查询来从存储表

如果quantity小于notifyIn它会通知我,我想下面的查询:

select * from store 
where (quantity < notifyIn) AND (notify > 0) 

这完美的作品,但由于一个产品可以存储在多个blockNumbers它通知我即使量的产品并不比notifyin少,

例如:

productName = monitor, productNumber=123, storedInBranch=kenya, blocknumber=5b, quantity=5, notifyin=4 

productName = monitor, productNumber=123, storedInBranch=kenya, blocknumber=<b>1a</b>, quantity=5, notifyin=4 

所以ABOV e查询返回的结果都是低的,我想要做的就是总计quantity(5 + 5)和notifyIn 4.

+0

考虑进一步标准化数据库模式以删除重复字段。你可以提取产品到自己的表 – useyourillusiontoo

+0

也提取分支到一个表与相关的分支信息,如通知限制 – useyourillusiontoo

回答

1

您在这里依赖notifyin为多行中的相同值。你可以做类似

SELECT productNumber, sum(quantity), min(notifyin) 
FROM store 
GROUP BY productNumber 
HAVING sum(quantity) < min(notifyin) 

如果可能的话,我会鼓励你改变你的模式,以更好地反映你的域逻辑。也许有一个单独的表与产品编号并通知价值。这样你就不会复制notifyin,并在不同的行中存储不同的值。

+0

很高兴听到它的帮助。如果它能帮助你回答你的问题,请接受我的回答。 – RVid

+0

阅读以下内容:[当有人回答我的问题时,我应该怎么做?](https://stackoverflow.com/help/someone-answers)。 –