Mailinglisten-Archive |
Hallo Niels, hallo Ralf, Am Mittwoch, 23. Mai 2007 schrieb Niels Jäckel: > > Ähnlich ist es, wenn ich von meiner aktuellen Position im Baum alle > > übergeordneten Knoten in einem Rutsch selektieren möchte (für eine > > Brotkrumen Navi). Das geht prima mit Binärbaum/Nested Set, aber > > auch mit deinem Ansatz? > > > > Hast du solche Abfragen schon damit gelöst? > > Die IDs der Brotkrumen sind über die ParentIDs miteinander > verstrickt, allerdings muss auch dort ein rekursives Select in > irgendeiner Form verwendet werden. > > Wie Lutz schon sagte, hast du mit den NestedSets sicherlich den > richtigen Grundansatz schon in der Hand :-) oder man arbeitet bei dem ID/ParentID-Modell mit einem Trick: Man vergibt für jede Element auf jeder Ebene einen Sortierschlüssel o.ä., wobei die Sub-Ebenen immer den Sortierschlüssel der Eltern-Ebene plus dem eigenen Schlüssel haben. Pro Ebene muß der Sortierschlüssel natürlich eine bestimmte Zeichenlänge haben, z.B. 3 Stellen. Das klingt jetzt etwas kryptisch, gemeint ist aber letztlich sowas: 001 Deutschland 001001 Düsseldorf 001002 Köln 002 Frankreich 002001 Avignon 002002 Paris Mit diesen Schlüsseln kannst Du dann auch mit einem SELECT die Sub-Ebenen für ein Element ziehen. Dieses Hierarchiefeld läßt sich mit Sicherheit auch automatisch befüllen. Die Lösung ist theoretisch etwas unflexibler als NestedSets, aber vielleicht reicht die Flexibilität in der Praxis ja. Ob sie auch so performant ist, wie die NestedSets-Lösung müßte man mal testen. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive