- PR -

階層問い合わせで、検索元を表示させたい

1
投稿者投稿内容
kn
会議室デビュー日: 2005/11/24
投稿数: 18
投稿日時: 2006-01-16 16:02
Oracle9iを使用していますが、
下記のSQL文で、「#####」の部分に、検索元(「AAA」もしくは「BBB」)を取り出す式を入れたいと思っています。
お分かりになるかた、いらっしゃいませんか?


select
K1.K親図番 as 親図番,
K1.K子図番 as 子図番,
nvl(prior K1.K構成数量,1) * (K1.K構成数量) as 構成数量,
############ as 検索元,
level as LV

FROM KOUSEI K1
START WITH (K1.K親図番 = 'AAA' or K1.K親図番 = 'BBB')

CONNECT BY PRIOR K1.K子図番 = K1.K親図番
ORDER SIBLINGS BY K1.K子図番
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-01-16 16:51
10gならConnect_by_Rootを使うんですが、

9iならsys_connect_by_pathの最初を使うか、

スカラー問い合わせで階層を逆にたどって、
Last_ValueでLevelが最大の行の値を取得ですかね
kn
会議室デビュー日: 2005/11/24
投稿数: 18
投稿日時: 2006-01-17 09:01
明智さん、
ありがとうございます!

sys_connect_by_path をつかって、うまくできました。

kn
会議室デビュー日: 2005/11/24
投稿数: 18
投稿日時: 2006-01-18 12:09
せっかくなので、合わせておしえてください。
上記の目的をOracle8 で実現する方法は、あるでしょうか?

(上記 ORDER SIBLINGS BY は、Oracle8では使用できないようですので、
そういう部分は無視してください)
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-01-18 14:36
4-9 階層問い合わせの根を取得
http://oraclesqlpuzzle.hp.infoseek.co.jp/4-9.html

oracle8だと
select句での相関サブクエリが使えないので、
結合を使うことになるようです。


[ メッセージ編集済み 編集者: 明智重蔵 編集日時 2008-02-28 19:42 ]
kn
会議室デビュー日: 2005/11/24
投稿数: 18
投稿日時: 2006-01-18 15:58
明智さん
ありがとうございます!

なんか、すごい方法を使うことになるんですね。
実際に使うには、少し大変そうです。

がんばって使ってみます。
1

スキルアップ/キャリアアップ(JOB@IT)