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

SQLで以下のようなレコードを引くことは出来るでしょうか。
オラクル9です。

フィールド1  フィールド2  フィールド3  フィールド4  5... (1~4でキー)
A  あ  1  2011/01/01  ...
A  い  1  2011/01/01  ...

以上のように、複数のキーの中でひとつだけ違うレコードを出すSQLはどう組めばよいでしょうか。
「あ」と「い」両方出したいのと、「う」があっても「あ」と「い」に限定できれば最高です。

よろしくお願い致します。

A 回答 (2件)

「複数のキーの中でひとつだけ違うレコード」


これはどういう意味でしょうか?
複合キーを構成する列のうち一つだけ違うというものでしょうか?
出来ないことはないと思いますが4列でも
( A.フィールド1=B.フィールド1 AND A.フィールド2=B.フィールド2 AND A.フィールド3=B.フィールド3 AND A.フィールド4<>B.フィールド4 ) OR
( A.フィールド1=B.フィールド1 AND A.フィールド2=B.フィールド2 AND A.フィールド3<>B.フィールド3 AND A.フィールド4=B.フィールド4 ) OR
( A.フィールド1=B.フィールド1 AND A.フィールド2<>B.フィールド2 AND A.フィールド3=B.フィールド3 AND A.フィールド4=B.フィールド4 ) OR
( A.フィールド1<>B.フィールド1 AND A.フィールド2=B.フィールド2 AND A.フィールド3=B.フィールド3 AND A.フィールド4=B.フィールド4 )
のような述語が必要になりますね。

あと、「あ」「」い」「う」で「あ」「い」だけ抽出するという基準はなんなのでしょうか?(抽出するレコードの優先順位)

この回答への補足

説明不足で申し訳ありません。
お聞きしたかったのは、仰るとおりです。

フィールド2(「あ」とか「い」のもの)は部門コードのようなものなのですが、部門の統合で全て「い」を「あ」にしなければならないのです。しかし質問に上げたレコードに関しては一意制約に引っかかってしまうため、どう処置するか検討しなければならずそのリストを出したいのです。

補足日時:2011/07/19 15:54
    • good
    • 0

全フィールドを選択して良いのなら



select * form テーブル名 where フィールド1="あ" or フィールド1="い"

でフィールド1が「あ」と「い」の分が選択できます。初歩も初歩の問題ですね。

で、苦言ですが質問するなら元のデータは詳しくご提示ください。ご質問ではこのような結果が欲しいとの例ですね。また、選択条件を明確にご提示されないと答えようがありませんよ。

プログラミングは、うまく質問できないと言うことは作成する内容をあなた自身が分かってない事になります。内容をよく理解すればご質問の内容も的確なものになると思います。

この回答への補足

すみません。次回からは気をつけます。

補足日時:2011/07/19 15:38
    • good
    • 0

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

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