구성요소 제품 레코드의 비용을 성공적으로 추출하고 상위/번들 제품의 전체 비용을 계산하는 복잡한 SQL 쿼리가 있습니다. 이 접근 방식은 각 구성 요소에 공급업체 비용이 있고 그 자체가 상위/번들 제품이 아닌 경우에 작동합니다.
쿼리 #1
으아악내 목표는 번들 구성 요소의 비용을 제거하도록 쿼리를 조정하거나 다시 작성하는 것이므로 재귀 CTE 쿼리가 좋은 방법인 것 같습니다.
상위->하위 관계를 보여주는 테이블에서 각 구성 요소 제품 ID를 추출하고 각 구성 요소를 계층 구조의 수준에 할당하는 CTE 쿼리를 성공적으로 작성했습니다. 제가 고민하는 것은 이 둘을 통합하는 방법입니다.
CTE 쿼리
으아악더 나은 컨텍스트를 제공하기 위해 여기에 MySQL 8.0 바이올린을 만들었습니다.
https://dbfiddle.uk/M6HT_R13
참고: 처리하기 쉽도록 쿼리 #1을 줄였으므로 바이올린의 일부 필드는 무시될 수 있습니다.
*편집: 현재 쿼리가 어떻게 가져오는지 확인하려면 바이올린에서 parentid 변수를 설정하세요.
몇 가지 추가 참고사항.
쿼리 #1의하위 쿼리는 공급자2비용 테이블에서 선호 또는 (설정되지 않은 경우)최저 공급업체 비용을 추출하기 위한 것이며 CTE 컨텍스트에서 이 하위 쿼리를 구현하는 방법을 잘 모르겠습니다(있는 경우). .
추가 컨텍스트가 도움이 되는 경우 문의해 주시면 해당 정보를 제공하도록 쿼리를 편집하겠습니다.
예상/예상 출력
제품SKU | 제품 태그 | BundleParentID | 컴포넌트_ID | 레벨 | 수량 | 선호 | 공급수량 | 비용 | 조정된 비용 |
---|---|---|---|---|---|---|---|---|---|
하위 구성 요소 #1 | CMP#2 | 36 | 35 | 2 | 1 | 1 | 1 | 수수료 | 개당 비용 |
하위 구성 요소 #2 | CMP#3 | 36 | 37 | 2 | 1 | 1 | 1 | 수수료 | 개당 비용 |
하위 구성요소 #3 | CMP#4 | 36 | 38 | 2 | 1 | 1 | 1 | 수수료 | 개당 비용 |
구성요소 #1 | CMP#1 | 34 | 33 | 1 | 1 | 1 | 1 | 수수료 | 개당 비용 |
하위 패키지 | 번드 #1 | 36 | 33 | 1 | 1 | 1 | 1 | 수수료 | 개당 비용 |
데이터는 궁극적으로 다음 구성 요소 비용 표를 제공하는 데 사용됩니다.
다음과 같은 것을 원할 수도 있습니다:
두 번째
으아악cte
에는 본문 쿼리와 재귀 쿼리를 결합하여 선택한 쿼리만 추출하는 조건을 추가합니다여기에서 데모