문제

나는 상위 제품을 선택하고 모든 IT의 모든 제품을 선택하려고합니다.당신이 할 것인지, 당신이 할 것인지, 그 자재 (BOM)를 폭발시킵니다.이것은 간단한 작업이어야하지만 예상 결과가 발생하지 않습니다.

SELECT LEVEL,
   serial_no,
   part_no
FROM ifsapp.part_serial_catalog_tab
   START WITH serial_no       = 'Serial1'
   AND part_no                = 'ParentPart'
   CONNECT BY PRIOR serial_no = superior_serial_no
   AND part_no                = superior_part_no;
.

나는 다음과 같은 결과를 보게 될 것입니다 :

1 Serial1 ParentPart
2 Serial1 ChildPart1
2 Serial2 ChildPart2
.

.. 그러나, 첫 번째 행 (부모) 만 반환됩니다.

참고 : 테이블에는 part_no / serial_no의 복합 키가 있으며이 예제에서 볼 수 있듯이 부모는 대개 자식 중 하나에서 Serial_no를 상속합니다.나는 이러한 문제 중 하나가 문제를 많이 복잡하게해야하지만 분명히 무언가가 잘못 될 것임을 확신하지 못합니다.

내 쿼리가 전체 계층 구조를 통해 드릴링되지 않는 이유는 무엇입니까?

도움이 되었습니까?

해결책

동료가 솔루션을 도왔습니다.

SELECT LEVEL,
   serial_no,
   part_no
FROM ifsapp.part_serial_catalog_tab
   START WITH serial_no       = 'Serial1'
   AND part_no                = 'ParentPart'
   CONNECT BY PRIOR serial_no = superior_serial_no
   AND PRIOR part_no          = superior_part_no;
.

내가 본 모든 예제는 간단한 키가있는 테이블을 참조하십시오.이와 같은 복합 키를 사용하면 두 열 사이의 관계를 지정해야하지만 두 번째 이전 키워드가 필요합니다.

   CONNECT BY PRIOR serial_no = superior_serial_no
   AND PRIOR part_no          = superior_part_no;
.

My SQL은 구문 적으로 정확했지만 실행중인 것이라고 생각한 쿼리의 경우!

다른 팁

내 추측은 결과를 첫 번째 레코드 만 제한한다는 것입니다.

AND part_no                = 'ParentPart'
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top