दिलचस्प पोस्ट
चेहरालेट (जेएसएफ) और एक्सएचटीएमएल के साथ ग्रहण स्वत: पूर्ण (सामग्री सहायता) ओपनसीवी: हर फ्रेम की प्रक्रिया करें फ़ाइल सामग्री में स्ट्रिंग को बदलें जब तक फ़ाइल पूरी तरह से लिखित नहीं हो जाती तब तक प्रतीक्षा करें कोर डेटा NSPredicate "हटाए गए == NO" अपेक्षित के रूप में काम नहीं करता है एलडी: जीसीसी / क्लैंग -स्टेटिक ध्वज के साथ OSX 10.6 पर -lcrt0.o के लिए पुस्तकालय नहीं मिला एक HTML लिंक बनाने के लिए एक फ़ोल्डर खोलने के तरीके क्या हैं MySQL JDBC ड्राइवर कनेक्शन स्ट्रिंग क्या है? एक सीमा के भीतर अनोखी यादृच्छिक संख्या उत्पन्न – PHP सी ++ में मेमोरी लीक "अपरिभाषित व्यवहार" वर्ग की समस्या क्या है? सी ++ में एक्सएमएल पार्सर का क्या उपयोग करना चाहिए? चश्मा चलते समय रूबी चेतावनियों को दबाएं Google फ़ॉन्ट कैसे IE में काम करने के लिए? मैं RichTextBox में एक छवि कैसे सम्मिलित कर सकता हूं? कैसे ऑब्जेक्ट के लिए कैमरा फ़िट करने के लिए

MySQL recursion?

इस तरह एक मेज पर विचार करें:

folders_table ----------------------- INT id_folder INT id_folder_parent VARCHAR folder_name 

कौन सा एक सरल निर्देशिका संरचना भंडार। मैं एक एकल SELECT क्वेरी से एक निर्देशिका की सभी उपनिर्देशिका कैसे प्राप्त करूं?

Solutions Collecting From Web of "MySQL recursion?"

यह संभव है, लेकिन आपको अपना डेटाबेस संरचना बदलने की आवश्यकता है; एक बार परिवर्तन किए जाने के बाद, आप एक क्वेरी में किसी भी गहराई का एक पेड़ पुनः प्राप्त कर सकते हैं। प्रश्न थोड़ा अधिक जटिल हैं, लेकिन यह अभी भी बहुत सरल है।

  • एक डाटाबेस (साइट पॉइंट) में पदानुक्रमित डेटा को संग्रहित करना – यह आलेख चरण-दर-चरण है, बहुत स्पष्ट है
  • MySQL में पदानुक्रमित डेटा का प्रबंधन – उपरोक्त के रूप में स्पष्ट नहीं है

आपके द्वारा दिखाया गया तालिका संरचना के साथ, यह MySQL के साथ नहीं किया जा सकता क्योंकि यह पुनरावर्ती क्वेरीज़ का समर्थन नहीं करता है

MySql / MariaDB के साथ आप ओपन क्वरी ग्राफ़ इंजिन ( http://openquery.com/graph/doc ) का उपयोग कर सकते हैं जो कि एक मायसक्ल प्लगइन है, जिससे आप एक विशेष टेबल बना सकते हैं जहां आप रिश्तों को डालते हैं, मूल रूप से माता-पिता और childId।

जादू यह है कि आप इस तालिका को क्वेरी से पारित मूल्य के आधार पर एक विशेष कॉलम कूड़ेदान के साथ पूछते हैं जो OQGRAPH इंजन को निष्पादित करने के लिए कहेंगे। विवरण के लिए दस्तावेज़ देखें

यह न केवल पेड़ (पुनरावर्ती 1-एन संबंध) को संभालता है, लेकिन वजन के साथ ग्राफ़ डेटा संरचना (रिकर्सिव एनएम रिश्ते) (उदाहरण के लिए सोचें कि आप कंपनियों की स्वामित्व को संग्रहित करना चाहते हैं, एक कंपनी कई सहायक हो सकती है और इसमें कई शेयरधारक भी हो सकते हैं)।

दूसरा विकल्प नोड की गहराई को संग्रहीत करना और प्रत्येक नोड के पूरा पथ के लिए एक पहचानकर्ता रखना और इन दोनों को मापदंड के रूप में उपयोग करना है।

जिस तरह से मैं एक संबंधपरक डेटाबेस में एक्सएमएल नोड्स को स्टोर करता हूं, वह निम्नलिखित है:

 SELECT id,value FROM element e1 INNER JOIN element e2 ON (e2.id=e1.parent_id AND name='friend') WHERE e1.depth>4 AND e1.path like 'root[1]/users[1]/user:dana[1]/public[1]%' 

इस उदाहरण में, मुझे नोड नाम के लिए एक फ़ील्ड मिला है और पेड़ में प्रत्येक स्तर पर समान नोड नाम वाले डुप्लिकेट नोड्स के लिए स्क्वायर कोष्ठ में एक इंटरएटर मिला है।

जब आप प्रत्येक नोड को सम्मिलित करते हैं, तो आपको रूट के आधार पर प्रत्येक स्तर को सरणी में जोड़कर रूट नोड (माता-पिता parent_id IS NULL ) को माता-पिता का पालन करके पूर्ण पथ की गणना करना होगा, एक ही समय में पथ की गहराई को संग्रहीत करना होगा।

प्रत्येक अनुरोध पर वृक्ष का अनुसरण करते हुए विज़ुअल प्रस्तुतीकरण और किसी भी रास्ते में आसान पहुंच रखने के लिए डेटाबेस में संग्रहीत किसी भी प्रकार के पदानुक्रम में हमेशा अच्छा होता है, विशेष रूप से mysql के साथ जो किसी भी प्रत्यक्ष पुनरावर्ती SQL सिंटैक्स नहीं होता है

पदानुक्रम (नेस्टेड सेट एडैसेंसी लिस्ट) में नोड्स के भंडारण की बायां / दायां योजना मेरे दिमाग में बहुत खतरनाक है और इस तरह की योजना में बहुत अधिक गलत हो सकता है, क्योंकि यह प्रबंधन करने में बहुत जटिल है।