यदि आप पूछ रहे हैं "क्या MySQL पुनरावर्ती प्रश्नों में है?" उत्तर "नहीं"।
लेकिन इसे संभालने का एक बहुत अच्छा तरीका है।
हेल्पर टेबल बनाएं (कैथेरार्की कहते हुए)
CatHierarchy:
SuperId, ChildId, Distance
------------------------------
1 1 0
1 2 1
2 2 0
यह अनावश्यक डेटा किसी भी पदानुक्रम का चयन करने के लिए 1 क्वेरी में आसानी से अनुमति देता है, और 2 में किसी भी पदानुक्रम का समर्थन करता है (हटाएं कैस्केड अखंडता को हटाने की सहायता से 1 क्वेरी में भी किया जाता है)।
अच्छा तो इसका क्या मतलब है। आप पदानुक्रम में सभी पथ ट्रैक करते हैं। कैट के प्रत्येक नोड को अपने आप में संदर्भ जोड़ना चाहिए (दूरी 0), फिर नोड्स के बारे में अनावश्यक डेटा जोड़कर दोहराव का समर्थन करें।
उप के साथ श्रेणी का चयन करने के लिए बस लिखें:
SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
WHERE ch.SuperId = :someSpecifiedRootOfCat
someSpecifiedRootOfCat - श्रेणी के रूट को निर्दिष्ट करने के लिए पैरामीटर है!