Žádné z předchozích řešení mi nefungovalo. Oba fungují, pouze pokud jsou rodiče uloženi do databáze v určitém pořadí.
Musím přiznat, že úplně nerozumím tomu, jak dotaz funguje, ale mohl bych najít způsob, který by pro mě fungoval (alespoň lepší než ostatní odpovědi).
Data, se kterými první a druhý dotaz nepracují, jsou:
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
Pokud použijete první a druhý dotaz v tomto datovém souboru, pro ID 5 dostanete pouze '6,7'. Ale pokud použijete můj dotaz, dostanete:'6,7,2,3,4', což je očekávaný výsledek.
Moje verze:
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;
Doufám, že to někomu pomůže. Nemohu komentovat ani hlasovat proti ostatním odpovědím kvůli nedostatečné pověsti :(