電子書籍の厳選無料作品が豊富!

Oracle8i databaseに対するSQLについて教えていただきたく。

Table A(従業員)のRow_IDをキーにして3つの
Table B(性別)、C(年齢)、D(部署)がそれぞれB.emp_id、C.person_id、D.target_id で関連付けられる場合に
Table B、C、Dのどのテーブルにも関連付けられない宙ぶらりんなTable AのRow_IDの調べ方が分かりません。
尚、Table Aはマスター表でRow_IDの重複はありませんが、B、C、Dに関してはTabele Aのレコード1行に対してN行存在します。

誤ったレコードをTable Aに挿入してしまいメンテを行う為に宙ぶらりんになっているTable Aのレコードを調査したいのです。
どうか宜しくお願い致します。

A 回答 (2件)

select A.Row_ID from tblA A


where not exists (select 'X' from tblB where Row_ID = A.Row_ID)
and not exists (select 'X' from tblC where Row_ID = A.Row_ID)
and not exists (select 'X' from tblD where Row_ID = A.Row_ID)
order by Row_ID;

ではどうですか?
    • good
    • 0
この回答へのお礼

回答有難う御座います。
ご教授いただきました方法で検索することが出来ました。
kazu1213さん、本当に有難う御座います。

初めて利用させていただきましたが、こんなに早く有効な手段を教えていただけるとは思っていませんでした。
回答をいただきました方々、本当に有難う御座いました。

お礼日時:2006/09/27 11:44

SELECT A.Row_ID,B.emp_id,C.person_id,D.target_id


FROM A,B,C,D WHERE A.emp_ID=B.emp_id …

をSQL*Plusで実行しログに出力すれば一目瞭然にできませんか? ログはAccessかExcelで開けばフィールドや、Lengthで並べ替えも可能です。
    • good
    • 0
この回答へのお礼

早々の回答有難う御座います。
zap35さんの仰る通りただのselect文での結果で判断するという方法もあるのですが、質問時に記述しなかったのですが今回のABCDそれぞれのテーブルに数万から数百万のレコードが存在するのです。
今回はイメージしていただき易いよう従業員等の例えを付けさせていただいたのですが、この場合だとEXCELでは対応出来ませんしACCESSの環境が現在ありませんので、どうにかSQLで出せないかと思った次第です。
zap35さん、質問時に条件の記述が無く誠に申し訳ありませんでした。

お礼日時:2006/09/26 20:42

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