我花了很长时间才弄清楚如何编写这个查询,我希望有人能给我指出正确的方向。
我有一个管理 Assets 的系统,有两个与这个问题相关的表。 item,对于所持有的每个 Assets 都有一个记录,然后是 item_activity,每次将项目 checkin 或 checkout 存储区域时都会存储一条记录。
我需要生成一份在某个日期范围内任何时间点保存的项目的报告(即我们的存储在一年内看到了多少个项目)。换句话说,我需要查看一年内存储在仓库中的所有项目,无论它们在那里存在多长时间(状态为“已 checkin ”)。查看我的事件表并查找某个日期范围内的签到状态很容易。我遇到的问题是捕获在我的日期范围开始之前 checkin 的项目,并且在那一年中根本没有移动。
这是我的架构
项目
- id(主键)
- 制作
- 型号
- 序列号
- 类型
- 值(value)
- 等等...
item_activity
- activity_id
- item_id(与项目表相关)
- 状态(已 checkin 、已 checkout 、已分配等)
- 时间戳
- 用户
- 注释
我确信以前有人遇到过这种情况,但我似乎找不到任何以前的问题,或者可能不知道用来定位问题的正确词语。感谢您的帮助!我对 SQL 很陌生。
最佳答案
所有事件......
SELECT *
FROM Item_Activity A
INNER JOIN Item I ON I.id = A.Item_ID
WHERE
A.timestamp BETWEEN @YourStartDate AND @YourEndDate;
在指定的 2 个日期之间有事件的所有项目......
SELECT I.*
FROM Item I
INNER JOIN Item_Activity A ON I.id = A.Item_ID
WHERE
A.timestamp BETWEEN @YourStartDate AND @YourEndDate;
关于MySQL 查询帮助 - 库存系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34856979/