Tidak ada solusi sebelumnya yang berhasil untuk saya. Keduanya hanya berfungsi jika orang tua disimpan ke dalam database dalam urutan tertentu.
Saya harus mengakui bahwa saya tidak sepenuhnya memahami cara kerja kueri tetapi dapat menemukan cara yang sesuai untuk saya (setidaknya lebih baik daripada jawaban lainnya).
Data yang kueri pertama dan kedua tidak berfungsi adalah:
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
Jika Anda menggunakan kueri pertama dan kedua dalam kumpulan data ini, untuk id 5 Anda hanya mendapatkan hasil '6,7'. Tetapi jika Anda menggunakan kueri saya, Anda mendapatkan:'6,7,2,3,4' yang merupakan hasil yang diharapkan.
Versi saya:
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;
Semoga itu membantu seseorang. Saya tidak dapat berkomentar atau mengurangi jawaban lain karena kurangnya reputasi :(