首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询显示过去给定日期的股票

查询显示过去给定日期的股票
EN

Stack Overflow用户
提问于 2015-08-20 11:42:34
回答 1查看 298关注 0票数 0

我正在开发仓库管理软件。

我有三张桌子:itemstock, documents, doc_pcs

itemstock字段(并非所有字段都显示):

  • rfid_no (它是唯一的主键)
  • item_name
  • status

documents字段:

  • id
  • doc_date
  • doc_type

doc_pcs字段:

  • id
  • id_doc \\这两个是主键
  • pos @ (id_doc连接到documents.id)
  • rfid_no (来自itemstock.rfid_no)

第一个表用于收集项的记录,这个表中没有任何内容被删除,只有当特定项发生时(发送到客户端,返回等等),状态就会发生变化。

Documentsdoc_pcs表存储文档数据。

doc_type是用来标记文档上的项目是进出仓库的。

问题是:我需要创建显示给定日期的所有股票的查询。

换句话说,它应该显示从今天的itemstockstatus=6 (“存储”)减去rfid_no的所有项目,这些记录在doc_pcs中有匹配的日期从今天到给定日期之间的日期,以及与doc_type="out" +E 255记录有rfid_no中与doc_pcs相关的与D58相关的匹配项,从今天到给定日期,并与doc_type="in"匹配。

几天来,我一直在寻找任何线索,但我找不到任何能让我找到任何解决方案的方法。我将感激任何帮助!

样本数据:

itemstock (截至今天):

代码语言:javascript
复制
00300D0909DA, "tshirt", 6
00300D0909DB, "apron", 6 
00300D0909DC, "tshirt", 6
00300D0909DD, "trousers", 6
00300D0909DE, "tshirt", 1
00300D0909DF, "trousers", 1
00300D0909E0, "trousers", 6

documents

代码语言:javascript
复制
0,2015-08-01,"in"
1,2015-08-02,"in"
2,2015-08-03,"out"
3,2015-08-04,"in"
4,2015-08-05,"out"
5,2015-08-06,"in"

doc_pcs

代码语言:javascript
复制
0, 1, 00300D0909DA
0, 2, 00300D0909DE
1, 1, 00300D0909DF
1, 2, 00300D0909DD
2, 1, 00300D0909DE
3, 1, 00300D0909DB
4, 1, 00300D0909DF
5, 1, 00300D0909DC
5, 2, 00300D0909E0

对于给定的doc_date=2015-08-04 (包括字段rfid_no和item_name )的查询结果应该是:

代码语言:javascript
复制
00300D0909DA, "tshirt"
00300D0909DB, "apron" 
00300D0909DD, "trousers"
00300D0909DF, "trousers"

编辑:我成功地完成了以下查询,但是它不断地执行,因此我认为有些地方出了问题:

代码语言:javascript
复制
SELECT DISTINCT c.rfid_no 
 FROM itemstock c LEFT JOIN doc_pcs d 
  ON c.rfid_no=d.rfid_no 
   WHERE c.status=6 
OR 
 (d.id IN 
  (SELECT dk.id 
   FROM documents dk 
    WHERE DATE(dk.doc_date)>='2015-08-04' 
    AND dk.doc_type="out") 
AND 
 d.id NOT IN 
 (SELECT dk.id 
  FROM documents dk 
   WHERE DATE(dk.doc_date)>='2015-08-04' 
    AND dk.doc_type="in"))
EN

回答 1

Stack Overflow用户

发布于 2015-08-20 12:04:37

看起来,你可以从今天的价值观出发,向后工作,也可以从“第0天”开始,向前迈进。通过存储截至“今天”的股票计数,您将对数据进行反错处理,因此我将选择第二种方法(也许您可以为自己保留一个表)。

假设从‘第0天’开始,所有股票都是空的。要获得给定日期的股票计数,您需要(p-query):

代码语言:javascript
复制
select sum((select count inbound where date <= inventory_date) - (select count outbound where date <= inventory_date))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32117315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档