我会尝试解释我的要求,这有点复杂。
我想用关于日期的密钥存储消息。
例如,对于date1
和dateX
有效的dateY
,我希望将消息text1
与key 1
一起存储
对于date2
和dateX2
有效的dateY2
,我希望将邮件text2
与key 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)
如何调整视图以满足此要求?
谢谢
答案 0 :(得分:0)
您可以维护一个单独的表来将键映射到相应的日期,并在视图的选择查询中使用相同的表(加入或存在子查询)。
问候。