Einzelnen Beitrag anzeigen
  #8  
Alt 17.10.2010, 16:20:44
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: NESTED SETS in XML ausgeben

So, mal eine erster Versuch zum Thema. Die Spalte "desc" würde ich umbenennen. Reservierte SQL-Worter als Spaltename zu verwenden, schafft nur unnötig Probleme.

Code:
SELECT CASE flag
         WHEN 1 THEN CONCAT( '<' , t.tag, '>', t.`desc` )
         WHEN 2 THEN CONCAT( '</' , t.tag, '>')
        END AS xml_teil
   FROM (SELECT tag, 1 AS flag, lft AS pt, id
          FROM tree
        
        UNION ALL
        
        SELECT tag, 2 AS flag, rgt AS pt, id
          FROM tree
        
        ORDER BY pt, tag ) r
   JOIN tree t
     ON t.id = r.id
ORDER BY r.pt, r.tag;

+--------------+
| xml_teil     |
+--------------+
| <A>content A |
| <B>content B |
| </B>         |
| <C>content C |
| <D>content D |
| <E>content E |
| </E>         |
| <F>content F |
| <G>content G |
| </G>         |
| </F>         |
| </D>         |
| </C>         |
| <H>content H |
| </H>         |
| </A>         |
+--------------+
16 rows in set (0.00 sec)

mysql>
Die einzelnen Ergebnis-Zeilen müssen dann noch in einen XML-String aneiander gehängt werden.

Mit XML kenne ich mich nicht besonders aus. Stimmt die "Richtung"?

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten