• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OracleのViewの作り方)

OracleのViewの作り方

msystemの回答

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.1

条件がもうひとつはっきりしないので、よく分かりませんが、取りあえず、亜行テーブルからは、全行を、か行テーブルからは、条件に合うもののみを持ってくるViewのSelect文は以下のようになると思います。 select か行.か,あ行.あ,あ行.い from あ行,か行 where あ行.あ=か行.あ(+) 「い」をUpdateしたい、ということですが、それはあ行テーブルの「い」でしょうか?それともか行テーブル?、両方?そのあたりがはっきりしないと分かりませんが、2つ以上のテーブルを結合させたViewに対し、Updateをかけるのは難しいと基本的に思っていただいたほうが良いかと思います。 どうしても、Updateをかけたいという場合の方法として、ひとつの案ですが、テンポラリテーブルを作ります。(「か」、「あ」、「い」列のあるもの)これに対し、あ行テーブルの変更などに対してのトリガー、か行テーブルに対しての変更に対するトリガー、テンポラリテーブルに対する変更を元テーブルに書き戻すためのトリガーを作成するれば、テンポラリテーブルをViewのように使うことができると思います。

関連するQ&A

  • Oracleのビュー作成時に「指定した列名の個数が無効です」エラー

    初歩的な質問かと思いますが、宜しくお願い致します。 Oracle10gでViewを作成する際に、以下のようなSQLを発行しています。 SELECT 列名1 FROM テーブル名1 この際、スケール(小数点)ありの列名を指定すると 「指定した列名の個数が無効です」というエラーが表示されてしまうのですが、エラー原因がわかりません。 (スケールなしの列名は問題なし) お手数ですが、ご教示いただけませんでしょうか。

  • オラクル結合SQL

    こんばんわ。オラクル初心者です。 オラクル9.1で、下記のようにtable1とtable2を結合して、view1(oracleビュー) を作成したいのですが、どのようなSQLがよいでしょうか。 なかなかうまい方法がなくてこまっています。 table1 no 項目 その他 その他1 1   1 1  2 1  3 .....省略 table2 no 項目 種別 結果 1  1  01  3 1  1  02   8 1  1   03  7 1  2  01  9 1  2   02   6 1  2  03  2 1  3  01   1 ...... view1 良い例 no 項目 結果1 結果2 結果3 1   1   3   8   7    ←種別01 02 03を順にいれる 1   2  9   6  2 1  3  1............ select table1.no,table1.項目,・・・ from table1,table2 where table1.no = table2.no and table1.項目 = table2.項目 ↑おおよそこのような感じになるとは思ってます。 何とか頑張ったのですが、下記のようになってしまうことが 多かったです・・・。どこかSQLがわるいようです。 view1 悪い例 no 項目 結果1 結果2 結果3 1  1   3   8  7 1  1   3   8  7 1  1   3   8  7 1   2  9  6  2 1   2  9  6  2 1   2  9  6  2 1   3  1............ もしご存知の方いらっしゃいましたら、助かります。よろしくお願いいたします。

  • オラクルのビューについて

    (顧客テーブル) 項目名 顧客コード、顧客名、顧客名カナ (商品テーブル) 項目名 商品コード、商品名、受注単価 (受注テーブル) 項目名 受注番号、顧客コード、受注年月日、納入予定年月日 (受注明細テーブル) 項目名 受注番号、商品コード、受注数量 を使って次のビューを作ります。 (商品別受注日計データ) 項目名  商品コード 商品名 受注単価 受注年月日 日計商品別受注数量  受注数量(受注明細テーブル)の合計 日計商品別受注金額  受注単価*日計商品別受注数量 このときに日計商品別受注金額を求めるには先に日計商品別受注数量を求めておかなければなりませんが、これを一つのSELECT文で行う事は可能でしょうか。 そのまま一つのSELECT文でやろうとするとGROUP BYでうまくいかないのですが、 やはり先に日計商品別受注数量を求めておかなければいけないのですか? どっちにしろやり方がわかりません。

  • ビューテーブル

    初心者的な質問です。 オラクルデータベースで、検索速度向上の為に ビューテーブルを作る事になりました。 ちょっといまいちわからないのですが、検索条件を 項目として作れば良いのでしょうか?? また、ビューテーブルを作って場合に、そのテーブルに データが入るタイミングとかってどうなっているのでしょうか?? ビューを使わないとしたら 7つのテーブルを参照して、検索をしなければなりません。 環境は、Webです。 ASPからUNIXのオラクル8にアクセスしています。 補足する必要があれば言って下さい。 可能な限り書きます。

  • オラクルのhint語について

    オラクルのview文に二つテーブルが存在します。 このようなhint語がどのように書いていますか。 例えば: view句  名前:vAB 「select A.a,B.b from A,B where *******;」 注; テーブルAのインデックス「name」, テーブルBのインデックス「age」。 有識者ご教えていただけませんか。 

  • レコード内容からテーブル特定

    Oracleのデータ更新について質問させてください。 SQL文で、ある文字列を含むレコードデータを持つ、テーブルおよびレコード名を知る方法はありますでしょうか? 具体的には、DBに登録されている"google.co.jp"という文字列を"yahoo.co.jp"という文字列に全てupdateしたいのですが、 "google.co.jp"という文字列は複数のテーブルの不特定のレコードに格納されています。 全てのテーブルを1つ1つselectで見ていくしか方法は無いのでしょうか?

  • ORACLE SQLビューで縦レコードを横1列に表示する方法

    ORACLEのビューで下記の縦持ちレコードの値を横1列に 表示するビューを作成したいのですが、方法がわかりません。 ビューで作成するのは無理でしょうか? ご教授ください。 請求番号 請求月 請求金額  1    4     1000 1    5     1500 2    4     5000 2    5     2500 ↓ 請求番号 4月  5月 1   1000  1500 2   5000  2500

  • Oracle delete文について

    お世話になります。 Oracle初心者です。 delete文の条件で他テーブルの列の値(列名は両方テーブルとも同じ) と同じ所の行を削除したいと思っているのですが、 コンパイルエラーになります。 基本的な書き方が悪いのでしょうか。 どなたかご親切な方、御教示頂きたく宜しくお願い致します。        記 delete from ( select 受注NO from T受注明細 where T受注明細.受注NO = D売上.受注NO)

  • クエリビルダで列名を変数にしたいが

    VisualStudio2010でwebアプリを作成しています。 クエリビルダでSQL文を作成しSQLサーバにアクセスしています。 このSQL文でわからない点があります。 列1、列2、列3のフィールドを持つテーブルがあるとします。 ドロップダウンリストで選択した項目により、ある時は列1だけ取得し ある時は列2だけ取得し、ある時は列3だけ取得する様なSQL文を作りたいのですが、どうすればよいかわかりません、列名を変数にできればよさそうなんですが、そんなことできますか? ある時は SELECT 列1 FROM table1 ある時は SELECT 列2 FROM table1 ある時は SELECT 列3 FROM table1 としたいので   SELECT @列名 FROM table @列名は変数のつもりです。 このようにできればよいと思っていますが・・・ よろしくおねがいします

  • オラクルで外部結合

    オラクル8iを使用しています。 テーブルを外部結合する場合のパフォーマンスについてお聞きしたいのですが、 下の二つのSQL文でパフォーマンスは変わってくるのでしょうか? (外部結合記号(+)を=の前後につけた場合) SELECT 項目 FROM テーブル1 A, テーブル2 B WHERE A.項目1 = B.項目1(+); SELECT 項目 FROM テーブル1 A, テーブル2 B WHERE B.項目1(+) = A.項目1;