재귀적 CTE 결과를 보조 SQL Select에 병합
P粉573809727
P粉573809727 2024-01-16 18:01:02
0
1
420

구성요소 제품 레코드의 비용을 성공적으로 추출하고 상위/번들 제품의 전체 비용을 계산하는 복잡한 SQL 쿼리가 있습니다. 이 접근 방식은 각 구성 요소에 공급업체 비용이 있고 그 자체가 상위/번들 제품이 아닌 경우에 작동합니다.

쿼리 #1

으아악

내 목표는 번들 구성 요소의 비용을 제거하도록 쿼리를 조정하거나 다시 작성하는 것이므로 재귀 CTE 쿼리가 좋은 방법인 것 같습니다.

상위->하위 관계를 보여주는 테이블에서 각 구성 요소 제품 ID를 추출하고 각 구성 요소를 계층 구조의 수준에 할당하는 CTE 쿼리를 성공적으로 작성했습니다. 제가 고민하는 것은 이 둘을 통합하는 방법입니다.

CTE 쿼리

으아악

더 나은 컨텍스트를 제공하기 위해 여기에 MySQL 8.0 바이올린을 만들었습니다.

https://dbfiddle.uk/M6HT_R13

참고: 처리하기 쉽도록 쿼리 #1을 줄였으므로 바이올린의 일부 필드는 무시될 수 있습니다.

*편집: 현재 쿼리가 어떻게 가져오는지 확인하려면 바이올린에서 parentid 변수를 설정하세요.

  • 34 => 하위 번들 구성요소(ZWK180)가 포함된 제품을 찾을 수 없습니다.
  • 36 =​> 모든 단일 레벨 구성 요소가 포함된 제품이 발견되었습니다. *

몇 가지 추가 참고사항.

쿼리 #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 수수료 개당 비용

데이터는 궁극적으로 다음 구성 요소 비용 표를 제공하는 데 사용됩니다.

P粉573809727
P粉573809727

모든 응답(1)
P粉675258598

다음과 같은 것을 원할 수도 있습니다:

두 번째cte에는 본문 쿼리와 재귀 쿼리를 결합하여 선택한 쿼리만 추출하는 조건을 추가합니다

으아악

여기에서 데모

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿