इसके लिए कुछ समाधान हैं यदि इसके लिए पहला समाधान अधिक जटिल है लेकिन बेहतर प्रदर्शन देगा:
यह MySQLI में पदानुक्रमित डेटा संरचना को लागू करने के बारे में है, जैसे कि यहां गाइड है
http://mikehillyer.com/articles/managing-hierarchical-data- in-mysql/
जिसे द नेस्टेड सेट मॉडल नाम दिया गया है।
दूसरा समाधान जिसे मैंने वास्तव में अपने द्वारा कार्यान्वित किया है वह पुनरावर्ती विस्तार है, यह बहुत सारे MySQL अनुरोधों का उपयोग करता है और मेरा मानना है कि इसमें सुधार किया जा सकता है, लेकिन यह तेज़ है और अच्छी तरह से काम करता है। बात यह है कि इस तरह प्रत्येक श्रेणी के कार्य के लिए उपयोग करना है
var expandSubcategories = function (category) {
return new promise(function (resolve, reject) {
category.getSubcategories().then(function (subcategories) {
//if has subcategories expand recursively inner subcategories
if (subcategories && subcategories.length > 0) {
var expandPromises = [];
_.each(subcategories, function (subcategory) {
expandPromises.push(expandSubcategories(subcategory));
});
promise.all(expandPromises).then(function (expandedCategories) {
category.subcategories = [];
_.each(expandedCategories, function (expandedCategory) {
category.subcategories.push(expandedCategory);
}, this);
//return self with expanded inner
resolve(category);
});
} else {
//if has no subcategories return self
resolve(category);
}
});
});
};
तो यह श्रेणियों के माध्यम से जा रहा है और उन्हें पुनरावर्ती रूप से विस्तारित कर रहा है।
शायद यह किसी की भी मदद करेगा।