Ingen af de tidligere løsninger virkede for mig. Begge virker kun, hvis forældrene er gemt i databasen i en bestemt rækkefølge.
Jeg må indrømme, at jeg ikke helt forstår, hvordan forespørgslen fungerer, men kunne finde en måde, der fungerer for mig (i hvert fald bedre end de andre svar).
De data, som den første og anden forespørgsel ikke fungerer med, er:
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
Hvis du bruger den første og anden forespørgsel i dette datasæt, får du for id 5 kun som resultat '6,7'. Men hvis du bruger min forespørgsel, får du:'6,7,2,3,4' som er det forventede resultat.
Min version:
SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder
WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder
JOIN
(SELECT @pv:=5) tmp
) a;
Håber det hjælper nogen. Jeg kan ikke kommentere eller nedstemme de andre svar på grund af manglende omdømme :(