• ベストアンサー

SQLで質問です。

SQLで以下のようなレコードを引くことは出来るでしょうか。 オラクル9です。 フィールド1  フィールド2  フィールド3  フィールド4  5... (1~4でキー) A  あ  1  2011/01/01  ... A  い  1  2011/01/01  ... 以上のように、複数のキーの中でひとつだけ違うレコードを出すSQLはどう組めばよいでしょうか。 「あ」と「い」両方出したいのと、「う」があっても「あ」と「い」に限定できれば最高です。 よろしくお願い致します。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.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 ) のような述語が必要になりますね。 あと、「あ」「」い」「う」で「あ」「い」だけ抽出するという基準はなんなのでしょうか?(抽出するレコードの優先順位)

noname#244179
質問者

補足

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

その他の回答 (1)

  • papapa0427
  • ベストアンサー率25% (371/1472)
回答No.1

全フィールドを選択して良いのなら select * form テーブル名 where フィールド1="あ" or フィールド1="い" でフィールド1が「あ」と「い」の分が選択できます。初歩も初歩の問題ですね。 で、苦言ですが質問するなら元のデータは詳しくご提示ください。ご質問ではこのような結果が欲しいとの例ですね。また、選択条件を明確にご提示されないと答えようがありませんよ。 プログラミングは、うまく質問できないと言うことは作成する内容をあなた自身が分かってない事になります。内容をよく理解すればご質問の内容も的確なものになると思います。

noname#244179
質問者

補足

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

関連するQ&A