पिछले समाधानों में से किसी ने भी मेरे लिए काम नहीं किया। दोनों केवल तभी काम करते हैं जब माता-पिता एक निश्चित क्रम में डेटाबेस में सहेजे जाते हैं।
मुझे यह स्वीकार करना होगा कि मैं क्वेरी के काम करने के तरीके को पूरी तरह से नहीं समझता लेकिन मेरे लिए काम करने वाला एक तरीका ढूंढ सकता है (कम से कम अन्य उत्तरों से बेहतर)।
वह डेटा जिसके साथ पहली और दूसरी क्वेरी काम नहीं करती हैं:
idFolder , FolderName , idFolderParent
1 ADoc Null
2 ADoc1 7
3 ADoc2 2
4 ADoc3 3
5 ADoc4 Null
6 ADoc5 5
7 ADoc6 5
यदि आप इस डेटासेट में पहली और दूसरी क्वेरी का उपयोग करते हैं, तो आईडी 5 के लिए आपको केवल परिणाम '6,7' मिलता है। लेकिन अगर आप मेरी क्वेरी का उपयोग करते हैं तो आपको मिलता है:'6,7,2,3,4' जो अपेक्षित परिणाम है।
मेरा संस्करण:
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;
आशा है कि यह किसी की मदद करता है। प्रतिष्ठा की कमी के कारण मैं टिप्पणी नहीं कर सकता और न ही अन्य उत्तरों को कम कर सकता हूं :(