Hi,
I'd need a MySQL query to transform my nested sets structure into XML. (no PHP)
The Problem is how to close all tags correct.
My method of resolution:
1) Find leaves
2) Make a "TAG"-string (group_concat) and make it shorter with level
This is running:
A[01,16]
B[02,03] C[04,13] H[14,15]
D[05,12]
E[06,07] F[08,11]
G[09,10]
<a><b></b><c><d><e></e><f><g></g></f></d></c><h></h></a>
This is NOT running (D is wrong):
A[01,16]
B[02,03] C[04,15]
D[05,14]
E[06,11] H[12,13]
F[07,10]
G[08,09]
SQL CODE:
SET @level:=0;
SELECT n.*,
@level:=count(*)-1+(n.lft>1),
concat('<',n.name,'>',
IF(n.rgt-n.lft=1,
group_concat(
IF(
p.rgt<n.rgt+@level,
concat('</',p.name,'>'),
'')
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;
thanks a lot for helping