再帰的な CTE 結果をセカンダリ SQL 選択にマージします
P粉573809727
P粉573809727 2024-01-16 18:01:02
0
1
350

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

クエリ#1

リーリー

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

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

CTE クエリ

リーリー

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

https://dbfiddle.uk/M6HT_R13

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

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

  • 34 => サブバンドル コンポーネント (ZWK180) を含む製品が見つかりません
  • 36 = > すべての単一レベルのコンポーネントを含む製品が見つかりました。 *

追加のメモ。

クエリ #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粉573809727
P粉573809727

全員に返信(1)
P粉675258598

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

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

リーリー

デモはこちら

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!