ホームページ  >  に質問  >  本文

再帰的な CTE 結果をセカンダリ SQL 選択にマージします

コンポーネント製品レコードのコストを正常に抽出し、親/バンドル製品の全体コストを計算する複雑な SQL クエリがあります。このアプローチは、各コンポーネントにサプライヤーコストがあり、それ自体が親/バンドル製品ではない場合に機能します。

クエリ#1

リーリー

私の目標は、バンドルされたコンポーネントのコストを削減するためにクエリを調整または書き換えることです。そのため、再帰的 CTE クエリが最適な方法のようです。

親 -> 子の関係を示すテーブルから各コンポーネントの製品 ID を抽出し、各コンポーネントに階層内のレベルを割り当てる CTE クエリを作成することに成功しました。私が苦労しているのは、この 2 つをどのように統合するかです。

CTE クエリ

リーリー

より良いコンテキストを提供するために、ここに MySQL 8.0 フィドルを作成しました:

https://dbfiddle.uk/M6HT_R13

注: 処理を容易にするためにクエリ #1 を削除し、フィドル内の一部のフィールドを無視できるようにしました。

*編集: フィドルにparentid変数を設定して、現在のクエリがどのようにプルされるかを確認します:

追加のメモ。

クエリ #1 のサブクエリは、supplier2cost テーブルから優先または (設定されていない場合) 最低のサプライヤー コストを抽出することを目的としていますが、このサブクエリを CTE コンテキストで実装する方法がわかりません( もしそうなら)。

追加のコンテキストが役立つ場合は、質問してください。クエリを編集してその情報を提供します。

期待/期待される出力

###レベル### ###量### ###料金### CMP#236 ###料金### 37 ###料金### 2 ###料金### 1 ###料金### 1 ###料金### データは最終的に、次のコンポーネントのコスト表を提供するために使用されます。
製品SKU 製品ラベル バンドル親ID コンポーネント_ID優先 供給数量調整後のコスト サブコンポーネント#1
35 2 1 1 1ユニットあたりのコスト サブコンポーネント#2 CMP#3 36
2 1 1 1ユニットあたりのコスト サブコンポーネント#3 CMP#4 36 38
1 1 1ユニットあたりのコスト コンポーネント#1 CMP#1 34 33 1
1 1ユニットあたりのコスト サブパッケージ 外灘#1 36 33 1 1
1ユニットあたりのコスト
P粉573809727P粉573809727277日前356

全員に返信(1)返信します

  • P粉675258598

    P粉6752585982024-01-17 10:16:36

    次のようなものが必要になるかもしれません:

    2 番目の cte で、本体クエリと再帰クエリを結合する条件を追加して、選択したクエリのみを抽出します

    リーリー

    デモはこちら

    返事
    0
  • キャンセル返事