• 締切済み

[materialized]マテリアライズドビューの検索

マテリアライズドビューを作成し、selelct文を発行致しましたら、 『"TEST2":無効な識別子です。』とエラーが出てしまいました。 下記の様に、テーブル、View、マテリアライズドビューを作成した後、 select文を作成しました。 View、マテリアライズドビュー、select文のいずれかで間違いが有ると思うのですが、どの様に修正を行えば良いのかが分かりません。 ですのでエラーを回避する方法を教えて頂きたく思っております。 宜しくお願い致します。 ■テーブル1作成 Create table TEST_TBL1 ( Test1 nchar(6), Test2 nchar(6) ); ■テーブル2作成 Create table TEST_TBL2 ( Test1 nchar(6), Test2 nchar(6) ); ■レコード追加 INSERT INTO TEST_TBL1 (Test1, Test2) VALUES (1,1); INSERT INTO TEST_TBL1 (Test1, Test2) VALUES (2,2); INSERT INTO TEST_TBL2 (Test1, Test2) VALUES (3,3); INSERT INTO TEST_TBL2 (Test1, Test2) VALUES (4,4); ■ビュー作成 create view TEST_VIEW as select A.rowid AROWID,A.Test1 ID,A.Test2 TITLE,3 MARKER from TEST_TBL1 A union all select B.rowid AROWID,B.Test1 ID,B.Test2 TITLE,4 MARKER from TEST_TBL2 B; ■ログ作成 create materialized view log on TEST_TBL1 with sequence,rowid (Test1, Test2) including new values; create materialized view log on TEST_TBL2 with sequence,rowid (Test1, Test2) including new values; ■マテビュー作成 create materialized view TEST_MVIEW REFRESH FAST on demand as select * from TEST_VIEW; ■データ抽出 Select TEST1 FROM TEST_MVIEW WHERE TEST2 = '1'; ご回答の程、宜しくお願い致します。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

>create view TEST_VIEW as >select A.rowid AROWID,A.Test1 ID,A.Test2 TITLE,3 MARKER from TEST_TBL1 A >union all >select B.rowid AROWID,B.Test1 ID,B.Test2 TITLE,4 MARKER from TEST_TBL2 B; あのー、TEST_VIEWにはすでにTEST2というフィールドはありませんよね? (TITLEにリネームしています)

char_0121g
質問者

お礼

いつもお世話になっております。 ご回答ありがとうございます。 『Select ID FROM TEST_MVIEW WHERE TITLE = '1';』と修正致しましたら、正常に検索が出来ました。 本当にありがとうございました。 これからも何卒宜しくお願い致します。