Einzelnen Beitrag anzeigen
  #5  
Alt 15.10.2010, 08:37:54
mr_sol mr_sol ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 58
Beiträge: 19
AW: NESTED SETS in XML ausgeben

Ich habe 2 Lösungsansätze


Lösungsansatz 1:
Code:
SELECT n.*,		
concat('<',n.tag,'>',
n.desc,
IF(n.rgt-n.lft=1,
	group_concat(

	
		IF(
		p.rgt<n.rgt+4,
		concat('</',p.tag,'>'),
		'')
	ORDER BY p.rgt
SEPARATOR ''
	)
,'')
)
    FROM tree n,
         tree p
   WHERE n.lft BETWEEN p.lft AND p.rgt
GROUP BY n.id
ORDER BY n.lft
Erklärung:
p...parent Elemente mit einen lft,rgt Wert
n...node oder das aktuelle Elemente welches auch einen lft,rgt Wert besitzt, welche sich zwischen p.lft und p.rgt befindet
zB:

Element G[9,10] befindet sich innerhalb von A[1,16],C[4,13],D[5,12],F[8,11],G[9,10] - aus dieser Anzahl der Elemente kannst du die Tiefe des Baumes auf G bezogen erfahren.


Um zB Element G zu schliessen benötige ich </G></F></D></C> das Element </A> sollte sich nicht in der Menge gefinden.

mit p.rgt<n.rgt+4 habe ich die Menge beschränkt - nicht sehr sinnvoll.


http://www.klempert.de/nested_sets/
Gute Seite





Lösungsansatz 2: Die Menge mit einen JOIN einschränken.

Ich gehe von 2 Mengen aus:

Menge der Elemente ober aktuellen Element (siehe oben)
zB:G - G,F,D,C,A

Menge aller Elemente bei welcher der lft Wert grösser als der aktuelle lft und rgt Wert ist.
zB:G - H
schränke diese auf das erste Element ein (falls mehrere vorhanden sind)


Schränke erste Menge auf alle Elemente ein die kleiner als der lft Wert des Elemente H sind - G,F,D,C


http://www.developersdex.com/gurus/a...112.asp?Page=3
Die Seite des Nested Sets Meisters


Nur wie mache ich das am besten?
Mit Zitat antworten