- PR -

【SQL】データ抽出について

1
投稿者投稿内容
yui
会議室デビュー日: 2006/11/03
投稿数: 2
投稿日時: 2006-11-03 16:51
悩んでいることがありまして載せました。

Table1
カラム CD
value 'A', 'B', 'C'

Table2
カラム CD
value 'A', 'B'

Table1, 2からvalue 'C' だけを持つTable3をcreateしたいのですが出来ません。
もし分かる方がいたらご教授下さい。
よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-03 17:21
引用:

yuiさんの書き込み (2006-11-03 16:51) より:

Table1, 2からvalue 'C' だけを持つTable3をcreateしたいのですが出来ません。


SELECT の結果を、そのまま INSERT。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2006-11-03 17:46
じゃんぬねっとさんの回答に屋上屋を架すの感がありますが。

CREATE TABLE 〜 AS SELECT 〜 構文を調べてみると、ちょっと幸せになれるかもしれません。

# DBMS に何を使っているか書いていないけれど、Oracle と PostgreSQL ならこれで良いはず。
## また「ご教授」。
## ら抜き言葉のように広まってゆくのでしょうか。

[ メッセージ編集済み 編集者: Gio 編集日時 2006-11-03 17:47 ]
yui
会議室デビュー日: 2006/11/03
投稿数: 2
投稿日時: 2006-11-04 00:26
すみません。言葉がまったく足りなかったので追記します。
Table1からTable2には無いCDを抽出したTable3を作成するための
SQLが分からずに投稿しました。
今回の例ではValue'C'だけですが、'D'等がTable1に追加されたら
'C', 'D'を含むTable3を作成したいのです。

ちなみにDBはOracleです。

以下のwhere部分の条件を設定すれば実現できる気がするのですが
分からないのです。
知恵を貸して下さい。

create table Table3
as select CD from
(
select
T1.CD
from
Table1 T1, Table2 T2
where
・・・・・・
)

[ メッセージ編集済み 編集者: yui 編集日時 2006-11-04 00:27 ]
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2006-11-04 15:01
えーと、「Table1にあって、Table2にないと言う抽出条件の書き方が分らない」ってことで良いですか?
そうであれば、NOT IN もしくはNOT EXISTSを使います。

<NOT INの例>
from Table1
where CD NOT IN (Select CD FROM Table2)

あとこれが良く分らないのですが、
引用:

今回の例ではValue'C'だけですが、'D'等がTable1に追加されたら
'C', 'D'を含むTable3を作成したいのです。


Table1にデータが追加されたら、テーブル作り直すんですか?
Viewにしておけない理由でもあるのですか?

説教臭いことはなるべく書きたくないのですが、
引用:
ちなみにDBはOracleです。


"ちなみに"じゃなくて、使用されているDBMSはバージョンも含めて必ず書いて下さい。
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-11-07 08:05
差集合
1

スキルアップ/キャリアアップ(JOB@IT)