
SQLで、下記selectを行いたいです。
テーブルA
テーブルB
テーブルC
これら三つのテーブルには、同一のコードが振られています。
この三つのテーブルのひとつにでも、抜けているコードを抜き出したいです。
(テーブルAのコード=テーブルBのコード=テーブルCのコードになっていないコード)
例)
テーブルAに入ってるコード(1.3.5)
テーブルBに入っているコード(1.4.5)
テーブルCに入っているコード(1.5.6)
このとき、三つのテーブルにきちんと入っているコードは、1と5だけなので、それ以外のコードを抜き出す→3.4.6
これをSQLで行う場合、簡単なSQL文はありますでしょうか?
今、考えているのは、各テーブルすべてをinner joinしたviewを作成し(これにより三つとも入ってるコードの一覧ができる)、
そのviewと、テーブルA、テーブルB、テーブルCそれぞれをひとつづつleft joinして、不一致データを取り出す方法です。
でも、そうすると、viewを作成しなくてはいけず、また、SQLをテーブルの数分(今回は3回)投げなくてはいけなくて。。
もっと、単純にかけないものでしょうか?
ご存知の方、教えてください。
No.1ベストアンサー
- 回答日時:
RDBMSは、SQL Serverなのですね?
2000ですか?2005ですか?
バージョンにより、せっかく具体的なSQLを提示しても、質問者さんの環境では動かせない場合があります。
以下のSQLを試してみてください。2005なら動くと思います。
2000なら、インラインビュー(「select ~ from (select ~ from ~)」という記述)が、使えないかも知れません。
select *
from(select c1 from A
union
select c1 from B
union
select c1 from C) as x
where not exists
(select * from A,B,C
where A.c1=B.c1 and B.c1=C.c1
and x.c1=A.c1)
ありがとうございます。
早速試してみました。
きちんと値が返ってきました!
あとは、負荷状況とかを確認して、つかえそうでしたら、使わせていただきます。
早速ご回答いただき、本当にありがとうございました。
P.S ちなみに、2005です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
accessで移動平均する方法
-
ACCESS2000のテーブル構造
-
請求と入金のテーブルの作成の...
-
SQLで○○の値以外を持っているレ...
-
SELECT時の行ロックの必要性に...
-
Accessにインポートしたら並び...
-
SI Object Browserのテーブルス...
-
クエリのキャンセルがいつにな...
-
Accessでの排他制御
-
更新クエリでキー違反
-
SQLサーバーのテーブルの値...
-
sqlite(spatialite_gui)での...
-
AccessShareLock はどの程度気...
-
コクヨ タイトルブレーンでイ...
-
IDENTITY列
-
PL/SQLでFROM句に変数を使いたい
-
数百万件レコードのdelete
-
SQL SERFVER で外部キーのエラ...
-
オラクルではできるのにSQLSERV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
accessで移動平均する方法
-
請求と入金のテーブルの作成の...
-
ACCESS2000のテーブル構造
-
重複するキーから一番古い年月...
-
2つのテーブルから条件に一致...
-
Accessユニオンクエリーで2つ...
-
主キーの変更
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
続.ORACLEのSELECTのソートに...
-
Accessでフィールドを比較した...
-
行方向のデータを横に並べる
-
update文で質問です。 下記の条...
-
ACCESS2000です。
-
VIEWでテーブルの集計結果...
-
場合によって条件を変えるSQL
-
商品コード番号を入力すると商...
-
ACCESSのコンパイルエラーについて
-
Sheet1$が存在致しませんとエラー
おすすめ情報