根据键和日期创建视图(oracle)

时间:2016-11-02 08:16:15

标签: sql oracle

我会尝试解释我的要求,这有点复杂。

我想用关于日期的密钥存储消息。 例如,对于date1dateX有效的dateY,我希望将消息text1key 1一起存储 对于date2dateX2有效的dateY2,我希望将邮件text2key 1一起存储,依此类推。

出于这个原因,我使用复合键(id和valid_from)

创建了下表
messages_table:
ID msg valid_from valid_to
1  text1 01.01.2000 31.12.2001
1  text2 01.01.2002 31.12.2003
2  text3 01.01.2000 31.12.2001
2  text4 01.01.2002 31.12.2003
3  text5 31.12.2001 31.12.2001
3  text6 01.01.2002 31.12.2003
..
...
100 ..........

现在我想在这个messages_table上创建一个视图表,它根据valid_from日期和ID显示相应的文本消息。 为了根据valid_from选择文本消息,我使用这样的东西,其中valid_from在01.01.1999和01.02.2000之间,这是有效的。 因为有很多消息(从1到100),我需要使用ID限制视图行的行,类似于(1,2,3)中的ID,这也是有效的。

视图如下所示:

CREATE OR REPLACE VIEW messages_view(id, msg)
AS
  SELECT id,
    id
    || ' '
    || msg
  FROM messages_table
  WHERE java_function.get_date BETWEEN valid_from AND valid_to
  AND id IN (1,2,22,32);

这将创建一个视图,其中包含valid_from和valid_to之间的消息以及(1,2,22,32)中的键。

现在问题/要求是我需要根据给定的date选择行。例如,对于01.01.2000 and 31.12.2001之间的日期,我需要选择让我们说(1,3,55)的密钥以及date时的密钥。 在01.01.2002 and 31.12.2003之间,我需要在(1,20,30)

中选择密钥

如何调整视图以满足此要求?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以维护一个单独的表来将键映射到相应的日期,并在视图的选择查询中使用相同的表(加入或存在子查询)。

问候。