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

时间:2015-08-20 11:42:35

标签: mysql join

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

我有三张桌子: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("存储") MINUS 记录rfid_no的匹配项与doc_pcs相关的documents日期今天指定日期以及doc_type="out" PLUS 记录rfid_no的{​​{1}}匹配doc_pcs今天之间的匹配给定日期documents

现在在这里和那里寻找任何线索,我找不到任何能引导我解决问题的方法。我会感激任何帮助!

示例数据:

doc_type="in"(截至今天):

itemstock

00300D0909DA, "tshirt", 6 00300D0909DB, "apron", 6 00300D0909DC, "tshirt", 6 00300D0909DD, "trousers", 6 00300D0909DE, "tshirt", 1 00300D0909DF, "trousers", 1 00300D0909E0, "trousers", 6

documents

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
包含字段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

编辑: 我设法进行了以下查询,但它无休止地执行,因此我认为有些事情是错误的:

00300D0909DA, "tshirt"
00300D0909DB, "apron" 
00300D0909DD, "trousers"
00300D0909DF, "trousers"

1 个答案:

答案 0 :(得分:0)

似乎你可以从今天的价值观开始,然后向后工作,或者你可以从“第0天”开始并向前工作。通过存储“今天”的库存计数,您正在对数据进行非规范化,因此我选择第二种方法(也许您可以保存自己的表格)。

假设从'第0天'起所有股票都是空的。要获得给定日期的库存数量(p-query):

Scales page to fit