Erreichen Sie auf effektive und einfache Weise Hierarchie, Eltern-Kind-Beziehung

Ich habe einen Tisch wie

create table site
(
site_Id int(5),
parent_Id int(5),
site_desc varchar2(100)
);

Bedeutung der Felder:

site_Id: ID der Sitesparent_Id: Übergeordnete ID der Sitesite_desc: ist zwar nicht relevant für die Frage, enthält aber die Beschreibung der Site

Voraussetzung ist, dass ich eine site_id als Eingabe habe und alle IDs unterhalb der Site markieren muss. Zum Beispiel:

                    A
                   / \
                  B   C
                / | \ /\
               D  E F G H
              /\
             I  J

Alle Knoten sind die site_Id.

Die Tabelle enthält folgende Daten:

Site_id  | Parent_ID  |  site_desc
_________|____________|___________
 A       |   -1       |   
 B       |    A       |
 C       |    A       |
 D       |    B       |
 E       |    B       |
 F       |    B       |
 I       |    D       |
 J       |    D       |

......

A ist die Mutter von B und C und so weiter.

Wenn B die angegebene Eingabe ist, muss die Abfrage D, E, I, F, J abrufen

Dies wird derzeit durch mehrere Abfragen in einer Schleife erreicht, aber ich habe darüber nachgedacht, dies mit einer minimalen Anzahl von Abfragen zu erreichen.

Was ich gerade mache ist:

runter stimmen

Der Algorithmus sieht folgendermaßen aus:

Initially create a data set object which you will populate, by fetching data from the data base. 
Create a method which takes the parent id as parameter and returns its child nodes if present, and returns -1, if it doesnt have a child. 
Step1: Fetch all the rows, which doesn't have a parent(root) node. 
Step2: Iterate through this result. For example if prod1 and prod2 are the initial returned nodes, in the resultset. 
Iterating this RS we get prod1, and we insert a row in our DataSET obj. 
Then we send the id of prod1 to getCHILD method, to get its child, and then again we iterate the returned resultset, and again call the getCHILD method, till we dont get the lowest node.

Ich benötige die am besten optimierte Technik innerhalb meiner Datenmodellbeschränkung. Sie können gerne antworten, wenn Sie Vorschläge haben.
Bitte schlagen Sie etwas vor. Danke im Voraus.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage