【问题标题】:MySQL: Retrieve data from Parent Table if it's Child Table's sum of QtyIn is greater than the sum of QtyOutMySQL:如果子表的 QtyIn 总和大于 QtyOut 的总和,则从父表中检索数据
【发布时间】:2021-03-09 21:53:07
【问题描述】:

这是我的场景:

Table A     Table B 
IDa = 1     IDb = 1 | IDa = 1 | QtyIn = 2 | QtyOut = 0
IDa = 2     IDb = 2 | IDa = 1 | QTyIn = 0 | QtyOut = 1 
            IDb = 3 | IDa = 2 | QtyIn = 1 | QtyOut = 0
            IDb = 4 | IDa = 2 | QtyIn = 0 | QtyOut = 1

如果表 B 的 QtyIn 之和大于其 QtyOut 之和,我想从表 A 中检索行。表 B 将按列 IDa 分组。在此示例中,表 A 的 IDa = 1 是唯一将被检索的行,因为它是剩余库存。我如何做到这一点?

【问题讨论】:

  • 为两个表提供 CREATE TABLE,将它们的示例数据(每行 3-5 行)作为 INSERT INTO,并将所需结果作为文本格式的表。指定精确的 MySQL 版本。
  • 我支持 Akina 的评论并添加您迄今为止尝试过的查询/查询,Put all those in your question

标签: mysql data-retrieval


【解决方案1】:

在这种情况下,首先您需要选择所需的列

SELECT COLUMN_NAME 

接下来你需要决定你需要哪些表,所以在这种情况下你还需要表 B:

SELECT COLUMN_NAME 
FROM TABLEA, TABLEB

接下来你应该弄清楚在这种情况下你的加入条件:

SELECT COLUMN_NAME 
FROM TABLEA, TABLEB
WHERE TABLEA.IDa = TABLEB.IDa

最后你想去聚合函数并进行计算,你的 sql 应该如下所示:

SELECT COLUMN_NAME 
FROM TABLEA, TABLEB
WHERE TABLEA.IDa = TABLEB.IDa
Group by TABLEB.IDa
Having SUM(QtyIn - QtyOut) > 0

是的,应该就是这样……

【讨论】:

  • 这几乎是正确的答案。在它起作用之前,我必须将 Group by TABLEA.IDa 更改为 TABLEB.IDa。如果您编辑它,我会将其标记为答案
  • @Sirc.Sbat 编辑了它,但只是让你知道你给我们的要求并不清楚你想要分组的内容,只是让你知道.... :)跨度>
  • 请注意,我们在 1992 年左右停止了这种方式编写查询。
  • @YunfeiChen 是的,很抱歉不是很清楚。这就是为什么即使我要求您编辑它,我仍然将您的答案标记为正确
猜你喜欢
  • 2020-04-18
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 2020-09-16
相关资源
最近更新 更多