\'Parents\' in einem Nested Set auslesen

Begonnen von kenny, 30. November 2007, 17:06:35

Vorheriges Thema - Nächstes Thema

kenny

Hallo zusammen.
Ich hab mich mit http://www.klempert.de/nested_sets/artikel/\" rel=\"external nofollow\">diesem Tutorial mal an Nested Sets gewagt.
Habe folgendes Problem..
Wie kann ich aus  folgendem Baum, den Pfad zu z.B. den Halbaffen auslesen?
Also als Ergebniss will ich die Datensätze Säugetiere, Primaten, Halbaffen in dieser reihenfolge erhalten. WIe muss die Query dafür aussehen.
Hier der Beispielbaum:
http://www.klempert.de/nested_sets/abb3.png\" alt=\"abb3.png\" />
Hoffe ich habe die Frage halbwegs verständlich gestellt.
Danke schonmal

Erstmal danke ich dir dafür, dass Du ein interessantes Thema in einer adäquaten Form ansprichst. Das ist hier nicht selbstverständlich.
Wie kann ich aus folgendem Baum, den Pfad zu z.B. den Halbaffen auslesen?[/quote]
Das beantwortet Arne, den ich übrigens sehr schätze, in seinem Beitrag unter dem Unterpunkt http://www.klempert.de/nested_sets/artikel/#kap4\" rel=\"external nofollow\">Blick auf Teilbäume.
http://kris.koehntopp.de/artikel/sql-self-references/sld001.htm\" rel=\"external nofollow\">Kris bietet ebenfalls eine gute Einführung in das Thema.
In einem Live-Szenario sollte man sowas aber nur einsetzen, wenn man häufig lesend zugreifen will. Die Schreib-Performance ist deutlich schlechter. Für einfache Verschachtelungen, bsp. bei Menüs, ist ein Nested Set aber deutlich übertrieben.

kenny

Vielen Dank für deine Antwort... So weit war ich in dem Tutorial noch garnicht. Habe irgendwie gedacht, im unteren Teil kommt nur noch löschen und einfügen von Knoten.
Im Prinzip, geht es mir erstmal nur ums verstehen der Materie. Wie, und wo ich das ganze überall einsetze, bleibt abzuwarten.
Im Moment stell ich gerade mein Gallerie Script auf ein Nested Set um. Bin recht begeistert. Ich spare ungefähr die Hälfte meiner Querys. Schreib-performance, ist in diesem Falle ja kaum wichtig (ich füge nur alle paar Wochen eine neue Gallerie hinzu. Und auch bisher nur Ich).
Ein Problem habe ich jedoch noch. Und das kann ich mir so garnicht erklären.
kleiner Ausschnitt meiner DB:
 


id          Name          lft          rgt
----------------------------------------------
1           Übersicht      1            80
....
8           GallerieX     12            13
....

 
 
die query:


SELECT p. *
FROM pi_cat n, pi_cat p
WHERE n.lft
BETWEEN p.lft
AND p.rgt
AND n.id =8
ORDER BY n.lft

 
 
liefert jetzt dieses ergebniss:


id          Name          lft          rgt
----------------------------------------------
8           GallerieX     12            13
1           Übersicht      1            80

 
 
Warum ist die reihenfolge falsch? In meiner Query heißt es doch extra \"ORDER BY n.lft\". Warum kommt die Übersicht nicht zuerst? Bug?Oder verpeil ich was?
Auch wenn ich das ganze mit Gallerien mache, die Tiefer im Baum liegen... Das Ergebniss ist komplett richtig. Nur die Übersicht wird hinten dran gehängt...anstatt, dass sie am Anfang kommt.

kenny

und das nächste Problem /uploads/emoticons/icon_e_sad.gif.ad4af608d2eb611202443ae3a67ed606.gif\" alt=\":-(\" />
Immer noch dieser Baum als Beispiel:
http://www.klempert.de/nested_sets/tab1.png\" alt=\"tab1.png\" />
oder halt als Baum:
http://www.klempert.de/nested_sets/abb3.png\" alt=\"abb3.png\" />
 
Im Tutorial, ist der Ausgabe von Teilbäumen zwar sehr gut beschrieben. Jedoch möchte ich alles ausgeben, was nur eine Ebene tiefer liegt.
Beispiel:
Ich Bin in der Ebene von ID1 (also quasi an der Wurzel) meine Query soll mir jetzt aber nicht alle Untergeordneten Knoten/Blätter liefern. Sondern nur die, die eine Ebene tiefer liegen. In diesem Beispiel also Primaten und Nagetiere.
Ich hab nicht so wirklich eine Idee wie ich das hinbekommen soll.Im Beispiel gibt es nur eine Query für alle \"Kinder\" Knoten, die beliebig viele Ebenen tiefer liegen.
Ich tue mich auch ein bischen schwer mit dne querys aus dem Tutorial.
Danke für deine hilfe.

Beim Sortieren gibt es immer noch AUFWÄRTS oder ABWÄRTS! /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />

kenny

so weit, war ich auch schon /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
standard ist aber aufwärts... also ASC.

Auch wenn ich das ganze mit Gallerien mache, die Tiefer im Baum liegen... Das Ergebniss ist komplett richtig. Nur die Übersicht wird hinten dran gehängt...anstatt, dass sie am Anfang kommt.
[/quote]
Damit wollte ich verdeutlichen, das auch wenn ich z.B. 10 Ergebnisse bekomme... alle richtig nach \"lft\" aufwärts sortiert werden, nur lft=1 komischerweise am schluss kommt.
Habe das ganze jetzt so gelöst, das ich das Ergebniss in einem Array speicher, was ich dann mit php halt nochmal sortiere.
Viel größer ist eigentlich mein 2tes Problem (letzter Post).

all your base are belong to us