从Oracle数据库获取结果

问题描述 投票:0回答:2

我有一个数据库表频率表如下(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 | ...

mysql oracle oracle10g oracle-sqldeveloper
2个回答
0
投票

您可以使用oracle sysdate函数来获取数据库服务器的当前日期和时间,并在查询中使用它。


0
投票

这不是三个表的简单连接吗?

© www.soinside.com 2019 - 2024. All rights reserved.