SQL質疑応答スレ 10問目

このエントリーをはてなブックマークに追加
197NAME IS NULL
・DBMS名とバージョン
VB2008でOLEDBを使ってOracle10gに繋いでます。

・テーブルデータ
どの部品にはどの部品が使われてて〜といううような、
部品の構成を表す、下記のような親子関係と必要数のテーブルがあります
-------------
OYA KO KAZU
-------------
A   B  1
A   G  1
B   C  1
B   F  1
C   D  1
C   E  1
G   C  2
G   H  1


ツリーで表記すると、
A
├B
│├C
││├D
││└E
│└F
└G
 ├C
 │├D
 │└E
 └H

Aという部品は、BとGの部品で出来ている。
Bという部品はCとFの部品で出来ている〜という感じです。

・欲しい結果
これを階層のレベルと、それぞれの子の合計数を出したい。
ここでいうBの下のCは1なので、DもEも1だが、
Gの下のCは2なので、DもEもx2されて2になる
----------------
LV KO  GOUKEI
----------------
1  B   1
2  C   1
3  D   1
3  E   1
2  F   1
1  G   1
2  C   2
3  D   2
3  E   2
2  H   1


今は、プログラム側で親から子を見る所をサブルーチンで組み、回帰処理でループさせてるので、
リクエストが多く、あまりにも酷いかなぁ。。。と。
色々サンプルを見てconect byとかよく似てるんで、何かやり方があるのかな?と思い質問してみました。