• 締切済み

SQLの抽出方法を可能か教えてください

初めましてm(__)m SQLを最近始めたばかりの為、次のような場合の抽出条件がわかりません。 どなたかご存知の方がいましたら、回答をよろしくお願いいたします。 次のようなDBがあったとします。 項目1  項目2  項目3 001   aaa   003 002   bbb   005 003   ccc   004 004   ddd   005 このDBに対し、検索条件を項目1=004とした場合に、次のように抽出したいのですが、どうすればよろしいですか? 001   aaa   003 003   ccc   004 004   ddd   005 ※項目1の値が項目3と一致したらそのデータも抽出し、更にそのデータの項目1の値が項目3と一致したらそのデータも抽出するみたいにしたいと考えているのですが可能でしょうか? 以上です。 分かる人がいましたら、よろしくお願いします。

みんなの回答

回答No.3

#2さんの回答にあるように、再帰的に検索したいのでしょうか? 使用するRDBMSは、ここのカテゴリ通り、SQL Serverなのでしょうか? SQL Server 2005からなら、WITH文が使えるようになっており、再帰的な検索が可能になっています。

参考URL:
http://www.microsoft.com/japan/msdn/sqlserver/dnsql90/sql_yukontsqlenhance.aspx
NewSQL
質問者

お礼

早い回答、参考URL、ありがとうございます。 正直、SQLはまだ始めたばかりなので、URLをみてもピンとこないのですが、勉強してみます。

回答No.2

やりたいことは、 1.検索条件:項目1=004で「004 ddd 005」を抽出。 2.項目3=004(上記で抽出したレコードの項目1)で「003 ccc 004」を抽出。 3.項目3=003(上記で抽出したレコードの項目1)で「001 aaa 003」を抽出。 上記1.~3.を結果として返す、ということですよね。 これは「再帰処理」というものなので、SQL一発では不可能かと思いますが。 レコード数が質問文の4つしかないなら話は別ですが。

NewSQL
質問者

お礼

ありがとうございます。 はい、そうです。 レコード数が4つとは決まっていません やはり、SQL一発では無理ですよね~

  • m__m
  • ベストアンサー率26% (9/34)
回答No.1

質問がわからないので答えられません。 よってSQLにもできません。 >このDBに対し、検索条件を項目1=004とした場合に 一致するのは 004   ddd   005 だけです。 >項目1の値が項目3と一致したらそのデータも抽出し、更にそのデータの項目1の値が項目3と一致したらそのデータも抽出するみたいにしたいと考えているのですが可能でしょうか? よーく よんでください。 ”項目1の値が項目3と一致したらそのデータも抽出し” さらに ”項目1の値が項目3と一致したらそのデータも抽出” 同じことを 2回したいのでしょうか? 多分 なにか 間違えてかいていませんか? おもしろい なぞなぞみたいですよ。

NewSQL
質問者

お礼

回答ありがとうございます。 うまく伝わらなかったみたいですねm(__)m やりたいことは、kabilunlunさんの回答に書かれていることです。 しかし、kabilunlunさんの回答のように一回のSQLでは無理そうですね