У меня есть рекурсивный запрос, который действительно расширяет границы знаний Java-обезьяны Java. Теперь, когда он наконец 1:30 в AM, возможно, пора начать искать какую-то помощь. Это один из немногих раз, когда Google меня не подвел.
Таблица выглядит следующим образом:
Parent_ID CHILD_ID QTY
25        26        1
25        27        2
26        28        1
26        29        1
26        30        2
27        31        1
27        32        1
27        33        2
Я пытаюсь получить следующий результат, когда родительский список имеет каждый нижеперечисленный ребенок. Обратите внимание, что каскад qty также.
BASE    PARENT_ID  CHILD_ID   QTY
25         25        26        1
25         25        27        2
25         26        28        1
25         26        29        1
25         26        30        1
25         27        31        2
25         27        32        2
25         27        33        4
26         26        28        1
26         26        29        1
26         26        30        2
27         27        31        1
27         27        32        1
27         27        33        2
Я пробовал несколько отклонений от следующего, но безрезультатно.
SELECT *
FROM MD_BOMS
START WITH PARENT_ID is not null
CONNECT BY PRIOR CHILD_ID = PARENT_ID
ORDER BY PARENT_ID, CHILD_ID
Я использую базу данных Oracle. Любые предложения, идеи и т.д. Получили бы большую оценку. Это кажется близким, но я не уверен, что это то, что я ищу: Извлеките всех детей и их детей, рекурсивный SQL
Основано на (Получить всех детей и их детей, рекурсивный SQL). Я также пробовал следующее, но получаю "незаконную ссылку на имя запроса в предложении WITH", ошибка:
with cte as (
    select  CHILD_ID, PARENT_ID, CHILD_ID as head
    from    MD_BOMS
    where   PARENT_ID is not null
    union all
    select  ch.CHILD_ID, ch.PARENT_ID, p.head
    from    MD_BOMS ch
    join    cte pa
    on      pa.CHILD_ID = ch.PARENT_ID
)
select  *
from    cte