• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ツリー情報のデータをSQLで取得したい)

SQLでツリー情報のデータを取得する方法

このQ&Aのポイント
  • SQLServer 2008を使用して、ツリーデータから特定の引数を含むデータを取得する方法について教えてください。
  • ツリーデータの構造を持つテーブルから、指定した引数を含むツリー以下のデータを取得する方法を教えてください。
  • 特定の引数を持つツリー以下のデータを、SQLServer 2008を使って取得する方法について詳しく教えてください。

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

  • ベストアンサー
回答No.2

再帰SQL(クエリ)の出番だと思いますが、持ち合わせていないので リンクだけです。ご勘弁。 http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_1b.html

MetalDragon
質問者

補足

ありがとうございます。 説明と同様に、テーブルを作成し、 同じデータを登録しました。 --------- 照会1: WITH RECURSIVE 中間表(親品番, 子品番, 所要数) AS ( SELECT PP.親品番, PP.子品番, PP.所要数 FROM 部品構成表 PP WHERE PP.親品番='自転車' UNION ALL SELECT PP.親品番, PP.子品番, PP.所要数*中間表.所要数 FROM 中間部品表, 部品構成表 pp WHERE pp.親品番=中間表.子品番 ) SELECT 親品番, 子品番, 所要数 FROM 中間表; --------- 上記を実行すると 以下のエラーが発生しました。 ---------- メッセージ 102、レベル 15、状態 1、行 2 'RECURSIVE' 付近に不適切な構文があります。 ---------- 理由がわかりません。 教えてもらえないでしょうか?

その他の回答 (2)

回答No.3

残念ながら >持ち合わせていないので 検証できる環境がありません。 識者のご登場をお待ちください。

MetalDragon
質問者

補足

どうもありがとうございました。 いろいろ調べてわかりました。 どうやら、SQLServer2008では RECURSIVE を 使用することができないようです。 WITH [CTE] (親品番, 子品番, 所要数) として使用するみたいですね。 なんとか動作するようになりました。 ありがとうございました。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

SELECT * FROM Table WHERE OYA='A' OR OYA IN (SELECT KO FROM Table WHERE OYA='A')

MetalDragon
質問者

補足

ありがとうございます。 説明不足でもうしわけありません。 確かに、質問と同じ結果が出ましたが、 ほしいのは >この引数を含むそれ以下のツリーに関する >データを取得する方法 ですので、 A ┬C │├D ┬H ┬K ││ │ └L ││ ├I ││ └J │└E B ┬F ┬I  │ └L  └G このような場合 OYA KO Data -------------- H  K  K H  L  L も取得できるようにしたいのです どうもすみませんでした。

関連するQ&A