【问题标题】:Sql Query To Return Notification from store table从存储表返回通知的 Sql 查询
【发布时间】:2016-10-31 07:51:46
【问题描述】:

我有一个store 表,其中有productNameproductNumberstoredInBranchblockNumberquantitynotifyIn

如果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

所以上面的查询返回的都是低的,我想做的是将quantity (5+5) 和notifyIn 4 相加。

【问题讨论】:

  • 考虑进一步规范化您的数据库架构以删除重复字段。你能把产品提取到自己的表中吗
  • 还将分支提取到具有相关分支信息(如通知限制)的表中

标签: sql database sql-server-2012-express


【解决方案1】:

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

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

如果可能,我会鼓励您更改架构以更好地反映您的域逻辑。也许有一个带有产品编号的单独表格并通知价值。这样您就不会复制 notifyin 并冒着在不同行中存储不同值的风险。

【讨论】:

猜你喜欢
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 2017-11-10
相关资源
最近更新 更多