2016-11-02 3 views
1

私の要件を説明しようとしますが、少し複雑です。キーと日付(オラクル)に応じてビューを作成

日付に関するキーを含むメッセージを保存したいと思います。 dateXdateYから有効であるdate1、たとえばため 、IはdateX2dateY2から有効である、key 1date2ためのメッセージtext1を保存したいと思い、私はこれにkey 1とで、メッセージtext2を保存したいと思います。

このため、私は複合キー(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に応じてテキストメッセージを選択するために、私はこのようなものを、01.01.1999と01.02.2000の間のvalid_fromのどこかで使用します。 メッセージがたくさんあるので(1から100まで)、IDを使ってビューの行を制限する必要があります(IDが(1,2,3)の場合はこれも同様です)。

ビューは次のようになります。

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); 

これは、(1,2,22,32)であるVALID_FROMとVALID_TOとキーの間のメッセージとビューを作成します。

ここで、問題/要件は、指定されたdateに応じて行を選択する必要があることです。例は、01.01.2000 and 31.12.2001間の日のために、私はのは(1,3,55)を言わせてのキーを選択する必要があるだろうとdate01.01.2002 and 31.12.2003間 あるとき、私は、この要件を満たすための視野を調整する方法

(1,20,30)のキーを選択する必要がありますか?

はありがとう

答えて

0

あなたは、それぞれの日付にキーをマッピングし、ビューの選択クエリで同じを使用する別のテーブルを維持する(のいずれかに参加またはサブクエリが存在する)ことができます。

よろしくお願いいたします。

+0

さらなるテーブルを作成せずにこの要件を満たすためのよりよい方法があるかもしれませんか? –

+1

別のマッピングを保持しない場合、日付とキーのマッピングを変更するたびに、ビューを変更して再作成する必要があります。マッピングが変更されたときとそうでない場合、ビューを再作成する必要はありません。それに応じて更新されます。 –

関連する問題