डेटाबेस के कुछ ब्रांड (जैसे Oracle, Microsoft SQL Server) "रिकर्सिव क्वेश्चन" चलाने के लिए अतिरिक्त SQL सिंटैक्स का समर्थन करते हैं लेकिन MySQL ऐसे किसी भी समाधान का समर्थन नहीं करता है।
आप जिस समस्या का वर्णन कर रहे हैं वह SQL डेटाबेस में वृक्ष संरचना का प्रतिनिधित्व करने जैसा ही है। आपके पास बस एक लंबा, पतला पेड़ है।
RDBMS से इस प्रकार की डेटा संरचना को संग्रहीत करने और लाने के लिए कई समाधान हैं। निम्नलिखित में से कुछ प्रश्न देखें:
- "फ्लैट टेबल को ट्री में पार्स करने का सबसे कारगर/सुरुचिपूर्ण तरीका क्या है? "
- "क्या यह संभव है पुनरावर्ती SQL क्वेरी बनाने के लिए? "
चूंकि आप उल्लेख करते हैं कि आप क्वेरी द्वारा लौटाई गई "गहराई" को सीमित करना चाहते हैं, आप इस तरह से सूची को क्वेरी करते हुए इसे प्राप्त कर सकते हैं:
SELECT * FROM mytable t1
LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
LEFT JOIN mytable t10 ON (t9.next_id = t10.id);
यह गुड़ की तरह प्रदर्शन करेगा, और परिणाम सभी एक पंक्ति (प्रति लिंक्ड सूची) पर वापस आ जाएगा, लेकिन आपको परिणाम मिल जाएगा।