-PR-
解決済み

SQL文のテーブルについて

  • すぐに回答を!
  • 質問No.142073
  • 閲覧数184
  • ありがとう数3
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 13% (100/761)

テーブル表のいくつかの列と、もう1つテーブル表のいくつかの列を選んで、新しいテーブル表を作るにはどういった文がありますか?

よろしくお願いします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル11

ベストアンサー率 29% (74/253)

Oracleの場合、"create table **** as select ~"
を実行すれば、検索結果に従ったテーブルを作成できます。

Oracleのユーザ"scott"で説明します。

ユーザ"scott"で以下のSelect文を実行してください。

[実行SQL文]
select dept.deptno, dept.dname, emp.empno, emp.ename
from dept, emp
where dept.deptno=emp.deptno and
dept.deptno=10;
 ↓
[実行結果]
DEPTNO DNAME EMPNO ENAME
------------------------------------------
10 ACCOUNTING 7782 CLARK
10 ACCOUNTING 7839 KING
10 ACCOUNTING 7934 MILLER


次に、この検索結果を元に新規にテーブルを作成するSQL文を実行します。

[実行SQL文]
create table test1 as
select dept.deptno, dept.dname, emp.empno, emp.ename
from dept, emp
where dept.deptno=emp.deptno and
dept.deptno=10;


上記のテーブルの内容を確認します。

[実行SQL文]
select * from test1;
 ↓
[実行結果]
DEPTNO DNAME EMPNO ENAME
------------------------------------------
10 ACCOUNTING 7782 CLARK
10 ACCOUNTING 7839 KING
10 ACCOUNTING 7934 MILLER

その他の回答 (全5件)

  • 回答No.1
レベル13

ベストアンサー率 37% (419/1115)

SELECT ~ INTO ~

こちら(参考URL)はPostgreSQLのものですが、お使いのDBMSでも使用出来るはずです。
補足コメント
fm0606

お礼率 13% (100/761)

素人なもので、あのホームページではちょっとわかりかねます。

なにか簡単な例文を書いていただけるととてもありがたいです。お願いします。
投稿日時 - 2001-09-27 10:19:23


  • 回答No.2
レベル8

ベストアンサー率 45% (18/40)

おはようございます。

DBが記入されてないので、代表的なところでいくつか・・・

Accessの場合
「Select 必要項目 Into 新規テーブル名 From 元テーブル1と元テーブル2のリレーション Where 条件」
の1文でできます。

Oracleの場合
2文になります。
「Create Table 新テーブル(必要項目)」
「Insert Into 新テーブル名 (入力項目) Select 必要項目 From 元テーブル1と元テーブル2のリレーション Where 条件」

こんな感じです。

実表を作る必要が無いのであれば、仮想表(Viewとかクエリー)で対応することも可能です。

また、SQL文といってもDBにより少しづつちがうので、できればDBの種類だけでも書いておいてくださいね。

何かあれば補足してください。
  • 回答No.3
レベル11

ベストアンサー率 34% (97/285)

例をひとつ。

select tableA.col1,
tableB.col1
into 新しいテーブル名
form tableA join tableB
on tableA.col1 = tabeleB.col1
where tableA = 'XXX'

普通にselect文を作成した後に、fromの前に「into 新しいテーブル名」を入れるだけです。

マウス操作でもっと簡単にできますが、製品ごとの固有の部分になるのでパスします。
補足コメント
fm0606

お礼率 13% (100/761)

質問です。新しいテーブルと書いてあるのですが、そのテーブルの中にはvarchar型とかそういった情報とかはいらないのですか?
ただ単にテーブルを作ってそのまま上の文で作れるのでしょうか?
投稿日時 - 2001-09-27 11:00:30
  • 回答No.4
レベル11

ベストアンサー率 34% (97/285)

再びstorkです。

>そのテーブルの中にはvarchar型とかそういった情報とかはいらないのですか
SQLサーバーで確認したところ、もとの列のデータ型が引き継がれるようです。
列名はselect句で使用している列名がそのまま新しいテーブルの列名になります。

その他の製品については、詳しくは分かりませんがほぼ同じだと思います。

>ただ単にテーブルを作ってそのまま上の文で作れるのでしょうか?
#3の例はテーブルを作成しますので、あらかじめテーブルを作成する必要はありません。
既にテーブル名が存在する場合は、エラーになるか確認のメッセージが表示されると思います。

既に存在するテーブルに追加する場合は、oribeyakiの回答にあるようにinsert into句を使用します。

oribeyakiさんも書いてらっしゃいますがデータベースは何を使っているんですか?ものによっては製品固有の部分がひっかかるかもしれません。
補足コメント
fm0606

お礼率 13% (100/761)

何度もすみません。
オラクル8iを使っています。
何度もためしているのですが、うまいこといきません。

WHEREの条件にはなにをいれればよいのですか?
前の文ではある元のテーブルの条件一つしか入ってなかったですが・・・。
お手数かけます。
投稿日時 - 2001-09-27 12:57:10
  • 回答No.6
レベル5

ベストアンサー率 50% (2/4)

単純な方法ですが、以下のような方法はどうでしょうか?

・create_tableコマンドで、新しいテーブルを作成する。
・insert into 新テーブル名 select ~~ from ~~;
と新しいテーブルにデータを投入するsqlを発行する。

あまり、難しく考えないで簡単なコマンドを組み合わせで
もできるかと思います。
(注.ユーザサービス中はDBの整合性を考えるとできない
コマンドですので、サービス時間外にしてください。)

fm0606さんの質問と回答ズレてますか?
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ