Geen van de vorige oplossingen werkte voor mij. Beide werken alleen als de ouders in een bepaalde volgorde in de database zijn opgeslagen.
Ik moet toegeven dat ik de manier waarop de zoekopdracht werkt niet helemaal begrijp, maar ik zou een manier kunnen vinden die voor mij werkt (in ieder geval beter dan de andere antwoorden).
De gegevens waarmee de eerste en tweede zoekopdracht niet werken zijn:
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
Als u de eerste en tweede query in deze dataset gebruikt, krijgt u voor de id 5 alleen als resultaat '6,7'. Maar als je mijn query gebruikt, krijg je:'6,7,2,3,4', wat het verwachte resultaat is.
Mijn versie:
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;
Hoop dat het iemand helpt. Ik kan de andere antwoorden niet becommentariëren of neerstemmen vanwege een gebrek aan reputatie :(