Genau Hubert sowas habe ich gesucht, Das mit der Sotieruns stimmt da habe ich eine weitere spalte dafuer wollte das ganze nicht zu kompliziert machen ;-).
Vielen Dank. Gruss Roman Pittroff Consulting Bangkok, Thailand >-----Original Message----- >From: Joachim van de Bruck [mailto:[EMAIL PROTECTED]] >Sent: Thursday, May 30, 2002 7:27 PM >To: ASP Datenbankprogrammierung >Subject: [aspdedatabase] AW: SQL Report Drilldown > > >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
