我有一个数据库表频率表如下(companyid,任务和频率)是唯一键
| companyid| task |frequency | date |
| -------- | ----- | ------- | ----- |
| 123 | abc | Day | 03-03-2020 |
| 123 | def | Week | 09-03-2020 |
| 456 | abc | Week | 10-03-2020 |
| 456 | klm | Week | 12-03-2020 |
历史表如下PRIMARY KEY(“ companyid”,“ RECORDNO”)
| companyid| RECORDNO | STAGE | STATE |
| -------- | ----- | ------- | ----- |
| 123 | 12 | 1 | P |
| 456 | 13 | 2 | A |
| 123 | 13 | 1 | S |
条目表,唯一(“ companyid”,“ ID”)
| companyid| ID | STATE | task |
| -------- | ----- | ----- | ----- |
| 123 | 12 | Purchased | abc |
| 123 | 13 | Accesible | def |
| 456 | 13 | Store | abc |
| 456 | 14 | Store | klm |
我执行的工作通常每6个小时运行一次。我必须获取唯一的公司ID,其中历史记录表中的状态为'S',并且频率为任务=条目表中的任务,而recordno为历史记录表=条目表中的ID,当前系统日期大于频率表中的日期。] >
基本需求是处理日期小于当前系统日期的作业(条目表中的条目)。(请注意,系统日期始终为UTC,频率表中的日期可由用户配置)。companyid在所有表中都是通用的。
我已经尝试了以下查询来获取结果而没有日期过滤器。需要帮助以正确设置时间过滤器。
select distinct cny# from frequency where exists (select 1 from history, entry where history.companyid = entry.companyid and history.state='S' and history.record# = entry.id);
我有一个数据库表频率表,如下所示(companyid,任务和频率)是唯一键|公司编号|任务|频率|日期| | -------- | ----- | ------- | ----- | | 123 | ...
您可以使用oracle sysdate
函数来获取数据库服务器的当前日期和时间,并在查询中使用它。
这不是三个表的简单连接吗?