私はテーブルを持っていますが、ツリーを抽出する関係を書くことができません。ここで Oracleで階層クエリを生成する方法は?
は、データの一例である:LOT_ID | LOT_PRODUCED | ITEM_PRODUCED | ITEM_USED | LOT_USED | OPERATION | STEP
------ | ------------ | ------------- | --------- | -------- | --------- | ----
1 | LOT_1 | ITEM_1 | null | null | P | STEP_1
1 | null | null | ITEM_1 | LOT_1 | C | STEP_2
5 | null | null | ITEM_2 | LOT_2 | C | STEP_2
5 | LOT_2 | ITEM_2 | null | null | P | STEP_8
5 | null | null | ITEM_2 | LOT_2 | C | STEP_1
6 | null | null | ITEM_2 | LOT_7 | C | STEP_8
LOT_PRODUCED = LOT_1から始めて、私は出発たくさんのステップにリンクされているすべての手順で木を持っているしたいと思います。
この例では、STEP_1(LOT_1を生成したステップ)がLOT_2を消費することがわかります。そのロットはSTEP_8によって作成されました。このステップは、次にLOT_7を消費する。等々。
私はSTART WITHとCONNECT BYという概念を理解していると思いますが、リンクが列間で「ジャンプ」するため、このケースを解決することはできません。定義された親と子はありません。
これは簡単なクエリで解決できない場合、私はストアドプロシージャを開いています。
編集:Here is a drawing of the data shown above
だから左側のリンクの説明があります。ステップは多くを生産する
- たくさん
そして右側にはリンクがあります:connの番号ectorsは上記のデータの行番号です。
泥として澄んでいます。LOT_1がLOT_2を消費することを示す行はどれですか?あなたのテーブルには、直接的にまたは他の行の連鎖によって、それらの間の接続を示す行はありません。 (もしあれば、説明してください) – mathguy
3つの列挙可能なエンティティ(ロット、アイテム、およびステップ)があるようです。しかし、私は、これらのことの間に関係が何であるかは明らかではないと思います。あなたの質問を編集して、これらのことを(大まかに)示してください。これは、アイテムを作成するステップ、アイテムを使用するステップ、そしてアイテム_use_uses_を作成するステップのように見えます。あなたは明確にしますか? – halfer
質問に埋め込まれたグラフィック表現が問題の説明に役立つ場合があります。 – halfer