यह डेटाबेस में आपके पदानुक्रम के वास्तविक कार्यान्वयन पर निर्भर करता है। यदि आप नेस्टेड सेट मॉडल का उपयोग कर रहे हैं ( http://mikehillyer.com/articles/managing-hierarchical-data- in-mysql/ ) आप एकल चयन के माध्यम से पूर्ण अभिभावक-से-बाल पथ पुनर्प्राप्त कर सकते हैं।
अपडेट करें :ठीक है, चूंकि आप आसन्न सूची मॉडल के साथ जा रहे हैं, मैं तालिका में नोड स्तर को स्टोर करने का सुझाव देता हूं। यह न केवल आपको एक क्वेरी में नोड गहराई देगा, बल्कि यह आपको एक क्वेरी में उस नोड के पूरे पथ को पुनः प्राप्त करने की अनुमति देगा (यद्यपि उस क्वेरी को गतिशील रूप से जेनरेट करना होगा):
SELECT n1.name AS lvl1, n2.name as lvl2, n3.name as lvl3, ..., nN.name as lvlN
FROM nodes AS n1
JOIN nodes AS n2 ON n2.parent_id = n1.id
JOIN nodes AS n3 ON n3.parent_id = n2.id
...
JOIN nodes AS nN ON nN.parent_id = n(N-1).id
WHERE nN.id = myChildNode;
चूंकि आप जानते हैं कि आपका नोड स्तर एन पर है, बाएं जुड़ने की कोई आवश्यकता नहीं है और, आईडी / माता-पिता_आईडी पर उपयुक्त अनुक्रमणिका दी गई है, यह उचित रूप से तेज़ होना चाहिए।
इस दृष्टिकोण का नकारात्मक पक्ष यह है कि आपको नोड स्तर रखना होगा नोड चाल के दौरान अद्यतन किया जाता है, लेकिन यह काफी सरल और तेज़ होना चाहिए क्योंकि आप इसे केवल नोड और उसके बच्चों के लिए ही करेंगे - तालिका के अधिकांश भाग के लिए नहीं जैसा कि आप नेस्टेड सेट के साथ करेंगे।