Einzelnen Beitrag anzeigen
  #7  
Alt 17.10.2010, 11:53:26
mr_sol mr_sol ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 58
Beiträge: 19
AW: NESTED SETS in XML ausgeben

Hallo Thomas!

Danke für deine Rückmeldung. Erstaunlicherweise gibt für Nested Set viele Lösungen
(Blattsuch, Kindersuche, Levelhöhe, Nachfolger, Vorfahren,ect) nur dieses Thema findet man nicht.

Es gibt zwar ein Buch:
Book 8.3.2 [Page 195] - XML data management: native XML and XML-enabled database systems

http://books.google.com/books?id=7LN...page&q&f=false

wo das Nested Sets für XML verwendet wird.


Auch hier Lösungsansätze:
http://www.artfulsoftware.com/mysqlb...qled1ch20.html



1) Die Idee mit UNION finde ich gut, sollte mit mySQL 5.0 klappen stehe aber mit der Query an

2) Habe noch etwas probiert, auf Basis Menge beschneiden (Lösungsansatz 2).

Code:
SELECT node.tag,follower.tag,node.lft,follower.lft,node.rgt,follower.rgt
    FROM tree AS node,
         tree AS follower
 WHERE follower.rgt>=node.rgt 
   AND follower.rgt<
       (SELECT MIN(s.lft) FROM tree AS s WHERE s.lft>node.rgt)
 ORDER BY node.lft,follower.rgt

Schneide Menge der Nachfolger an der Stelle wo erstesmal ein höhere lft Wert steht als
der aktuelle Knoten (node). Alles was sich zwischen den aktuellen node und kleiner als s.lft befindet bleibt erhalten.

zB:
G[9,10] -> Nachfolger F,D,C,H,A
Erster Wert wo lft grösser als G rgt -> H[14,15]
Restmenge ist daher -> F,D,C

Problem: es sollte eine Ausnahmeregel für A gebe...H wird nicht ausgegeben.




Leider kann ich nicht mit JSON arbeiten, da die Verarbeiten in XSLT erfolgt. MySQL ist für mein Projekt aus anderen Gründen sehr gut geeignet....
vielleicht klappts ja doch:)

grüsse helmut

Geändert von mr_sol (17.10.2010 um 12:10:44 Uhr)
Mit Zitat antworten