Ho una query ricorsiva che sta veramente estendendo i limiti della conoscenza SQL di questa scimmia Java. Ora che è finalmente l'1:30 nell'AM, è probabilmente tempo di iniziare a cercare aiuto. Questa è una delle poche volte in cui Google mi ha deluso.Come recuperare tutti i figli ricorsivi della riga padre in Oracle SQL?
La tabella è la seguente:
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
Sto cercando di ottenere il seguente risultato, in cui il genitore ha elencato tutti i bambini sotto di loro. Si noti che anche la cascata del 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
Ho provato diverse deviazioni di quanto segue senza successo.
SELECT *
FROM MD_BOMS
START WITH PARENT_ID is not null
CONNECT BY PRIOR CHILD_ID = PARENT_ID
ORDER BY PARENT_ID, CHILD_ID
Sto utilizzando il database Oracle. Qualsiasi suggerimento, idea, ecc. Sarebbe molto apprezzato. Questo sembra vicino, ma non sono sicuro se è quello che sto cercando: Retrieve all Children and their Children, recursive SQL
Basato su (Retrieve all Children and their Children, recursive SQL) Ho anche provato quanto segue, ma ricevo un errore "riferimento di riferimento di query nome in WITH clausola" :
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
non capisco, come qty deve essere calcolato. Spiega per favore. –
Ciao Olaf. Questa particolare struttura modella una distinta base (BOM). È un modo di descrivere quali componenti compongono altri componenti. In breve, i qty dei componenti sono moltiplicativi. Ad esempio, se ci sono 2 27 in un 25, allora ci sarebbero 4 31 in un 25. Guardando indietro, ho fatto un refuso nel mio post originale. Ci dovrebbe essere solo 1 30 in un 25. –