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

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

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
    • good
    • 0

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



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

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

fm0606さんの質問と回答ズレてますか?
    • good
    • 0

再びstorkです。



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

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

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

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

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

この回答への補足

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

WHEREの条件にはなにをいれればよいのですか?
前の文ではある元のテーブルの条件一つしか入ってなかったですが・・・。
お手数かけます。

補足日時:2001/09/27 12:57
    • good
    • 0

例をひとつ。



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

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

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

この回答への補足

質問です。新しいテーブルと書いてあるのですが、そのテーブルの中にはvarchar型とかそういった情報とかはいらないのですか?
ただ単にテーブルを作ってそのまま上の文で作れるのでしょうか?

補足日時:2001/09/27 11:00
    • good
    • 0

おはようございます。



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

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

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

こんな感じです。

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

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

何かあれば補足してください。
    • good
    • 0

SELECT ~ INTO ~



こちら(参考URL)はPostgreSQLのものですが、お使いのDBMSでも使用出来るはずです。

参考URL:http://pjam.jpweb.net/pgsql-doc/ej/user/sql-sele …

この回答への補足

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

なにか簡単な例文を書いていただけるととてもありがたいです。お願いします。

補足日時:2001/09/27 10:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qミッドウエー海戦、最年少戦死者は15歳の少年4名だそうですが、

ミッドウエー海戦、最年少戦死者は15歳の少年4名だそうですが、
乗艦名(できれば4名の名前も)を教えてください。
よろしくお願いします。

城山三郎氏の対談集『気骨について』(新潮社)で知りました。

Aベストアンサー

『記録 ミッドウェー海戦』澤地久枝著、文藝春秋、昭和61年6月発行によれば、赤城1名、蒼龍2名、三隈1名となっています。名前などは図書館にはあるでしょうから自分で調べてください。以上

Qあるテーブルの内容を基準にして違うテーブルを更新するSQL文

教えて下さい。

あるテーブルに下記の内容があります。
ID│名称
─┼───
1│花
2│木
3│水

もうひとつのテーブルには、
ID│名称
─┼───
1│海
3│水
4│空
となっています。
最初のテーブルの全レコードを対象に、最初のテーブルのIDと同じ値がもうひとつの
テーブルにある場合、もうひとつのテーブルをUPDATEし、存在しなければINSERTしたい
です。
結果を
ID│名称
─┼───
1|花
2│木
3│水
4│空
を期待しています。

このようにするSQL文を教えていただけませんでしょうか。
よろしくお願いします。

Aベストアンサー

良く似た質問が過去に有りました。
回答2がぴったりだと思います。
参考にしてください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=604829

Q復興支援マッチ 日本~台湾戦 BGM曲名

いま放送中の台湾戦で19:01ごろにかかった曲名を教えてください。
相方は、かなり古い曲だと申しています。
聞いた事があるけれど、曲名がどうしても思い出せないそうです。
いい感じの、ロックでした。よろしくお願いします。

Aベストアンサー

19:01は観てなかったのですが、今流れていたのはジャーニーのセパレート・ウェイズ です。

Qテーブルの列名を変更したい

お世話になります

Oracleデータベースで
テーブルの列名を変更したいのですが、
どのような方法があるでしょうか?
入っているデータを消したくないので、
テーブルを作りなおすという方法はあまりとりたくありません


もしかして、Create Tableしなおさないと無理?

よろしくお願いします。

Aベストアンサー

テーブル作って

INSERT_INTO_新テーブル_SELECT_*_FROM_旧テーブル

で移行しちゃいましょう。

もっともトランザクションログを食いつぶさないようにしましょうね。

Q代表戦などの選手入場の時に流れる曲の曲名は?

代表戦などのおそらくFIFA主催の試合でだと思いますが、
あの選手入場のときに流れる曲の曲名はなんと言うのでしょうか。
この曲に関することが書いてあるホームページでも結構です。
よろしくお願いします。

Aベストアンサー

「FIFA ANTHEM」という曲らしいです。正式にはJASRACによると「FIFA HYMNE~ANTHEM」で、「FIFA ANTHEM」は副題というか通称なのかな。FIFA公認テーマソングで、作曲はFRANZ LAMBERTという人です。CDは出ていないみたいですね。

QOracle テーブルの列削除

タイトルの通りテーブル(test)の列(retu)を削除したいのですが・・・

Sql*pLUS画面
SQL> alter table test drop(retu); ←この用に入力
alter table test drop(retu)
*
エラー行: 1: エラーが発生しました。
ORA-00905: キーワードがありません。

となってしまい列を削除できません。
なにか構文の間違いでしょうか?

Aベストアンサー

alter table 表名
drop column 列名;

はOracleのバージョン8.1.5からです。
それ以前の場合は表を再作成します、

まず、既存の表名を変更して、
create table as select します。その際に削除したい列は抜かします。

1.rename 既存の表名 to 新しい表名;

2.create table 既存の表名
as select 必要な列のみ記述 from 新しい表名;


ただ、注意点としては「再作成」ですので、制約はNOT NULL以外全てなくなります。

Q浦和開幕戦で使われていた洋楽の曲名

ちょっと、カテ違いかもしれませんが…。
昨日の、Jリーグ開幕戦で埼玉スタジアム内に流れていた洋楽の曲名を知りたいのです。

だいたい、選手が練習を始めたぐらいに2,3曲洋楽が流れたと思うんですが、もし分かる方がいたら教えて頂けますでしょうか?
宜しくお願いします。

Aベストアンサー

音楽が流れている時に選手のコメントを読んでいた朝井夏海さんの事務所のホームページで詳しく調べることが出来ます。
もし、いつも流れている曲と違う曲ならば掲示板で質問してみてください。

また、このページから一部の曲を視聴&購入も出来ます。http://www.komura.com/urawa/music/

参考URL:http://homepage2.nifty.com/my-s/mainmenu.htm

Qテーブルのカラム(列)を追加したい

お世話になります、

DBはOracle8iです。

一度作成して、データが入っているテーブルAの
カラム(列)をデータをそのままにして追加できるの
でしょうか?
追加前のデータにデフォルト値を与えることはできるのでしょうか?

[変更前]
名前 年齢 性別
あ   1  男
い   2  女
う   3  男

↓カラム追加

[変更後]
名前 年齢 性別 フラグ
あ   1  男   0
い   2  女   0
う   3  男   0 

以上のような感じにしたいのですが、
Alter table文を使うところまではわかっているのですが。。。

よろしくお願いします。

Aベストアンサー

ALTER TABLE テーブル名 ADD(
フィールド名 NUMBER(10)
);

見たいな感じですね。

既存のレコードの値は、後からupdate文で入れることになります。

といっても
update テーブル名 set 追加フィールド名 = 値;

でおしまいですけど。

Q日本代表戦のときに流れる曲名がわかりません

日本代表戦の時に流れる曲を探しています。
外国人が歌っているのはTVで見たことはあるのですが、曲名や歌手がわかりません。
どなたかわかる方いませんか?

○W杯予選でも流れている曲です。
○番組のサッカーコーナーになると、流れる曲です。
 (川平さんの時に良く流れるかも)
○もしかしたら、CM(マークX)で流れてるのは同じ曲か も。

Aベストアンサー

サラブライトマン
ア・クエスチョン・オブ・オナー
だと思います
以下URLで試聴できます

参考URL:http://www.toshiba-emi.co.jp/sarah-brightman/disco/tocp40151.htm

Qエクセル表でA列が表示されない・・

こんにちは。
今エクセルで表を作成したのですが、A列だけが何故か表示されず、B列から始まっています。
ウインドウの【表示する】を選択しても解消されません。どのようにしたらA列を表示することができるのでしょうか??また、このような状態になった原因は何が考えられるのでしょうか?自分でも心辺りのない事なので、お分かりになる方よろしくお願い致します。

Aベストアンサー

こんばんは。

シート全体を範囲選択して、列番号Bで右クリック、「再表示」をクリックで表示されませんか?

原因については???すみません(^-^;A


人気Q&Aランキング

おすすめ情報