• ベストアンサー

<SQL>別の表の要素から新しい表を作成

SQLでセレクトしたデータを新しい表として作ることは出来ると思うのですが、セレクトしたデータ(1列)をもとに3列の要素があるテーブルを作るということは可能でしょうか? 例をあげて説明すると、 ある表はX1(商品ID(主キー)、商品名、値段、・・・)からなり、そこに100件のデータがあるとする。 別の表としてX2(商品ID、在庫、発注数)があるとする。 こういう場合にX2の表を作成すると同時に、(X1の商品ID、0、0)となるデータ100件も作成したいのですが、そういう操作は可能でしょうか? 手入力でinsertをしてデータを作るとなると、データが多い時に手間がかかるし、入力ミスが起きることもあると思うので、上記を達成できる方法があったら教えてください。 結合という方法だと列が多くなってしまうので、希望に合わないかなと思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Oracleでテストできる環境が手元にないため自信はありませんが以下のSQL文でいけるとおもいます。 CREATE TABLE X2 AS SELECT 商品ID AS X1の商品ID,0 AS 在庫,0 AS 発注数 FROM X1 型の指定が希望通りいかない場合はCAST関数を使ってCAST(0 AS NUMBER[n,m])という感じで0の型を指定してみてください。

k_aahen
質問者

補足

回答ありがとうございます。 テーブルを作成する時 creat table X2( "商品ID" NUMBER, "在庫" NUMBER, DEFAULT 0, "発注数" NUMBER, DEFAULT 0 ... ) と普段やっていましたが、この(の前に、AS SELECT... を入れればいいということでよろしいでしょうか? それとも、()内の記述は必要無くなるのでしょうか?

その他の回答 (1)

回答No.2

>別の表としてX2(商品ID、在庫、発注数)があるとする。 既存の表(X2)に対して、データを登録したいのでしょうか? 既存の表であれば、 insert into X2 select 商品ID,0,0 FROM X1; で不足する項目を定数で補いつつINSERTできます。 既存の表でなく、データの登録と併せて、新規にテーブルを 作ると言うことであれば、#1で書かれた方法で可能です。

関連するQ&A