需要帮助/指导sql select查询,我有2个表库存和stock_history,库存中会有库存的初始值 在更新库存表之前,stock_history将从库存表中插入第一个,我的情况是需要根据选择日期获取库存状态, 这是为了跟踪未结库存余额和关闭库存余额,只需从表库中获取数据即可轻松实现库存平衡 对于特定时间戳,但关键部分是何时获取开放式库存余额的数据,其中需要跟踪特定时间戳的状态, 这只能通过引用历史表来完成,所以我需要sql,需要从stock和stock_history中选择数据
status table
id desc
-- ----
01 consignment
02 customer
03 bank
04 safekeep
05 exit
stock
-----
ref_no serial_no status timeStamp
1 001 04 2012-03-01 09:03:00
stock_history
-------------
ref_no serial_no status timeStamp
1 001 01 2012-03-01 09:00:00
1 001 03 2012-03-01 09:01:00
1 001 02 2012-03-01 09:02:00
so, when choose for date
01/03/12 time 9:01 = 1 001 03 2012-03-01 09:01:00
01/03/12 time 9:01 = 1 001 03 2012-03-01 09:01:00
请提前帮助,请提供帮助
答案 0 :(得分:3)
您可以使用UNION运算符从多个表中进行选择:
SELECT * FROM stock
UNION ALL
SELECT * FROM stock_history
WHERE ...
那就是说,我建议重构你的架构。为什么有一个单独的“股票”和“stock_history”表?您实际上只需要一个“库存”表来存储两者 - “当前”库存只是具有最高状态的库存。或者你甚至可以明确地保持一个“is_current”标志行。
更新:将UNION
更改为UNION ALL
。 ALL
表示只组合两个表的行,无需额外处理。将其关闭将尝试首先删除任何重复的行,这可能效率较低(并且这里的结果没有任何区别,因为您的模式无法进行重复)。 Hat tip到@SmartestVEGA。
答案 1 :(得分:2)
SELECT * FROM stock
UNION ALL
SELECT * FROM stock_history
WHERE ...
也有效!