Wenn die Trees nicht zu umfangreich werden bzw. Wenn man immer den
gesamten Tree mit allen Kindern ausgeklappt darstellen will, dann lese
mir immer den ganzen tree in ein RS ein und nutze rs.Filter f�r die
rekursive traversation... Das sehr viel schneller als f�r jeden Knoten
mit Kindern wieder in die DB zu gehen...

Hat man mehrere B�ume in der DB, hat man zus�tzlich eine TreeID.

Claudius

> 
> Hallo!
> 
> > Ich habe einen Table mit folgender Strukur
> >
> > [project_id],[parent_project_id]
> >
> > Dieses erlaubt einen tree zu gestalten.
> >
> > Nun wie kann ich am schnellsten per SQL diesen tree
> > ausgeben lassen?
> 
> Da gibt es mehrere M�glichkeiten, aber richtig elegant kann 
> man das nur mit SQL Server und Stored Procedures l�sen. Hier 
> aber ein "universelles Beispiel" f�r beliebige Datenbanken 
> mit einem Unterprogramm, das rekursiv aufgerufen wird:
> 
> <%
> option explicit
> 
> call treeMenu(0, 0)
> 
> sub treeMenu(byval pParent, byval pLevel)
>    dim rm: set rm = Server.CreateObject("ADODB.Recordset")
>    rm.Open "select * from project where parent_project_id = " 
> & pParent,
>            db, adOpenStatic, adLockReadOnly, adCmdText
>    do while not rm.Eof
>       Response.Write(...)
>       call treeMenu(rm.Fields("project_id").value, pLevel + 1
>       rm.MoveNext
>    loop
>    rm.Close
> end sub
> %>
> 
> Anstatt direkt auf die Tabelle zuzugreifen, kann man auch 
> eine View basteln, die noch mehr Informationen zur�ckgibt:
> 
> SELECT   *, (SELECT COUNT(*)
>              FROM   project AS B
>              WHERE  b.parent_project_id = a.project_id) AS children
> >FROM     project AS A
> WHERE    parent_project_id = [P1]
> ORDER BY project_id
> 
> Hier wird zus�tzlich die Anzahl der "Kinder" ausgegeben, so 
> dass man sich manchen DB-Aufruf dann sparen kann.
> 
> Wenn die Anzahl der Ebenen begrenzt ist, kann man auch direkt 
> ein hierarchisches Recordset erzeugen lassen.
> 
> Ich vermisse bei Dir eine Spalte, in der die Reihenfolge 
> innerhalb einer Ebene festgelegt wird. Sortierst Du einfach 
> nur nach "project_id" oder vielleicht gar nicht?
> 
> Freundliche Gr��e
> Joachim van de Bruck
> 
> 
> 
> 
> | [aspdedatabase] als [EMAIL PROTECTED] subscribed 
> | http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv Sie 
> | k�nnen sich unter folgender URL an- und abmelden: 
> | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp
> 


| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an