レベル 1 パーツのサブパーツの制限のリストを取得する必要があります。一部のパーツの制限は null であり、それらの null パーツについては、そのパーツにあるレベル 2 パーツを照会し、それらのレベル 2 パーツの制限の MIN を指定する必要があります。一部のレベル 2 パーツについては、サブパーツ (そのレベル 2 パーツのレベル 3 パーツ) の MIN を取得し、それをレベル 2 集計にロールアップする必要があり ます。
あなたのアプローチは何ですか?
これを書いているときに、null レベル 1 の部分をフィルターで除外し、null レベル 1 の部分の集計を行うクエリで UNION できることに気付きましたが、これ以上の解決策がないことを確認したいと思います。最初に与えられたツリー全体を与えるクエリ (START WITH と CONNECT BY を使用して、下位レベルのパーツが上位レベルのパーツに結合された) に少し鳩の穴が開いたように感じたので、巧妙に圧縮しようとしました。 SQL、しかしできませんでした。また、UNION とサブクエリをコピー アンド ペーストする回数に基づく有限数ではなく、クエリが n レベルの集計で機能するようにしたいと考えています。
これは SQL で行う必要があります。PL/SQL を使用できません。
簡単にするために、スキーマを次のように考えてください。
Assembly table
level1_serial | level2_serial
-----------------------------
1234 | null
123 | 1
123 | 2
123 | 3
Limit table
part_serial | limit
-------------------
1234 | 1000
123 | null
1 | 500
2 | 400
3 | 600
この場合、次のように 2 つのレコードを返す必要があります。
part_serial | limit
-------------------
1234 | 1000
123 | 400