Parent child

Tags:    databaser

Jeg har en Parent-child tabel indeholdende konti.
Account Parent
001001 001004
En konto kan have en parent angivet i kolonnen "Parent", hvis "Parent" er tom eller Null er accounten på højeste niveau.

Jeg vil gerne have lavet et sql kald, som for en angivet account finder alle de undeliggende børn, samt deres børn osv..



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Umiddelbart tror jeg det bliver vanskeligt, da SQL ikke er særlig god til at håndtere rekursion. Havde du bare vidst hvor mange "undergrupperinger" levels du skulle bruge havde nog være lidt nemmere......

Problemet er at hvis du skal gøre dette skal du lave alias for dine tabeller (dvs. select * from mintabel a join mintabel b on a.kontonummer = b.parent....) problemet er at du skal i princippet lave et alias for alle de muligheder der kan forekomme...i dette tilfælde uendeligt, så det er et no go!

Hvis du bruger MSSQL Server kan du lave en cursor til at gøre det for dig, men den bliver vist også langhåret at strikke sammen. Hvis du bruger MSSQL Server og skal have lavet en kube på det bagefter så kan kuben gøre det for dig. (det håber jeg du skal for det andet kan godt blive noget performance tungt skriveri)...

(¯`·._.·[Brian Hvarregaard]·._.·´¯)



Jeg har en Parent-child tabel indeholdende konti.
Account Parent
001001 001004
En konto kan have en parent angivet i kolonnen "Parent", hvis "Parent" er tom eller Null er accounten på højeste niveau.

Jeg vil gerne have lavet et sql kald, som for en angivet account finder alle de undeliggende børn, samt deres børn osv..


Hvis det er en Microsoft SQL Server kan du lave en stored procedure hvor du åbner en CURSOR og looper igennem og smider det i en temp tabel og så til sidst laver en SELECT * på temp tabelen :)

Mvh. Thomas Lykke Petersen



Det er faktisk en dimensionstabel i en kube, men jeg skal udvikle et værktøj som finder alle børn under en given konto.
Jeg tror jeg laver det i vb.net, der kan jeg bruge rekusion. Ellers tak for hjælpen!



Hvis du alligevel har det som en dimension i en kube, kan du så ikke bare lave en MDX der kan hive det hele ud? Og hvis det er en dimension i en kube til brug i et Analyse Værktøj (hvilket analyse værktøj er det?), så kan værktøjet vel vise hvilke children der er til den bestemte konto (ellers kan det laves)

(¯`·._.·[Brian Hvarregaard]·._.·´¯)

[Redigeret d. 18/11-04 11:33:51 af Brian Hvarregaard]



Du har ret i at jeg kan lave et MDX som henter (Descendents of Account, leaves), men dette er mere til min ejen fornøjelse. Jeg var interesseret i om dette kunne gøres i et enkelt SQL kald.




desværre, men der er ingen grund til at lave en ny app til det, brug mdx sample application i stedet.... god fornøjelse :-)

På den anden side er det ikke sikkert at du vil se hvad kuben (dimensionen) viser i den dimension, men måske reelt hvad forskellen er mellem sql dataene og de data der er i dimensionen, men henblik på om der er "tabt" nogle dimensionsrækker i processeringen af kuben (de ikke kunne blive joinet på)

(¯`·._.·[Brian Hvarregaard]·._.·´¯)

[Redigeret d. 18/11-04 11:45:08 af Brian Hvarregaard]



Hvis du tilfældigvis bruger Oracle, kan du bruge en metode til parent child forbindelser der virker recursivt ... jeg mener den hedder connect by men er ikke 100 % sikker.

Inden jeg forsøger at grave den op fog dig må du lige svare hvilken database du laver det i.



t