こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLで質問です。

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

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

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

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

投稿日時 - 2011-07-17 15:48:45

QNo.6881368

困ってます

質問者が選んだベストアンサー

「複数のキーの中でひとつだけ違うレコード」
これはどういう意味でしょうか?
複合キーを構成する列のうち一つだけ違うというものでしょうか?
出来ないことはないと思いますが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 )
のような述語が必要になりますね。

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

投稿日時 - 2011-07-19 15:17:32

補足

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

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

投稿日時 - 2011-07-19 15:54:10

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

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

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

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

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

投稿日時 - 2011-07-18 15:57:00

補足

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

投稿日時 - 2011-07-19 15:38:11

あなたにオススメの質問