|
2010/08/24(Tue) 09:38:53 編集(投稿者)
■No52744 (ぼりびあん さん) に返信 > ウインドオズ2003R2のORACLE10G Windows Server 2003 R2 の Oracle10g ですね。
> A1とB1は主キー、A2とB2は副キーです。 どうみても、B テーブルはキー制約違反な気がしますが…。
> しかし、よくよく見るとAテーブルの「GGGGGGG」のA4には「2」のはずなのに > Bテーブルには実際にレコードは1つしかありません。 > こういう状態になってしまっているのを割り出したいのですが
いくつかの方法があるかと思いますが、たとえば
SELECT NVL(A1, B1) KEY1, NVL(A2, B2) KEY2, A4 A_NUM, B_NUM FROM A FULL OUTER JOIN (SELECT B1, B2, COUNT(*) B_NUM FROM B GROUP BY B1, B2) C ON A.A1 = C.B1 AND A.A2 = C.B2 WHERE NVL(A4, 0) <> NVL(B_NUM, 0)
では如何でしょう。「B 側にしか無いキー」や、 「A 側にしか無いキーだが、A4≠0な場合」も拾えると思います。
|