[ASP] Schwieriges rekursives SQL-Problem
Claudius Ceteras
activeserverpages at glengamoi.com
Wed, 16 Feb 2005 01:31:58 +0100
> Jetzt möchte ich pro Kategorie-Parent-Ebene immer alle aktiven =
direkt
> unsterstellten Kategorien (falls sie denn selber oder
> irgendwo tiefer aktive
> Einträge haben) sowie die Anzahl darin enthaltener aktiver
> Einträge (aus
> allen aktiven Unterkategorien zusammen) ausgeben.
Da das Tree ausgeben schon genug Arbeit ist, würde ich das Addieren =
der
Einträge vorher machen.
Immer wenn irgendwo ein Eintrag reinkommt, inkrementiert man in der
Kategorie und allen Parents bis zum Root einen Zähler in der =
Tabelle... Beim
entfernen aus der Kategorie entsprechend dekrementieren.
> Kategorie-Ansicht, wobei
> eben einerseits Kategorien deaktivert werden können (und
> damit auch deren
> Unterkategorien nicht einbezogen werden sollten) und andererseits eben
> Kategorien, die keine Einträge haben nicht angezeigt werden sollen.
Beim ausschalten einer Kategorie musst du halt richtung root die zahlen =
neu
setzen. Dazu zieht man die Zahl des zu deaktivierenden Knotens von allen
Knoten Richtung Root ab.
Beim aktivieren entsprechend wieder hinzuzählen.
=DCbrigens, wenn man einer Kategorie einen neuen Eintrag hinzufügt,
inkrementiert man natürlich nur so weit Richtung root, bis man auf =
einen
deaktivierten Knoten trifft...
Nested Sets könnten auch eine Alternative sein, weil man dort den Tree
shcneller ausgeben kann, allerdings ist hilft das bei der =
Einträgeberechnung
nicht, d.h. man würde das Verfahren von oben entsprechend anpassen. =
Mann
kann zwar bei NestedSets sowas wie die Anzahl der Childs automatisch zu
berechnen... Da sind aber auch Zwischen(-Kategorien)-Knoten mit =
drin(falls
man die Einträge mit in den Tree hängt), sonst halt nur die Anzalh =
der
Unterkategorien...
Claudius