Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैसकल क्वेरी जो श्रेणी ट्री लौटाती है

कोई एकल SQL क्वेरी नहीं है जो इस तालिका संरचना के आधार पर आपकी अपेक्षा के अनुरूप परिणाम ला सकता है।

समस्या को हल करने के दो तरीके हैं:

  1. पुनरावर्ती कॉल करने के लिए बाहरी एप्लिकेशन लॉजिक (DB के बाहर) का उपयोग करें जो प्रत्येक श्रेणी के बच्चों को खोजेगा और एप्लिकेशन में ट्री का निर्माण करेगा।

  2. रिलेशनल डेटाबेस में ट्री डेटा को स्टोर करने के लिए एल्गोरिदम में से एक का उपयोग करें। ऐसे एल्गोरिदम में से एक को कहा जाता है। कोड>संशोधित प्रीऑर्डर ट्री ट्रैवर्सल या बस एमपीटीटी।

मान लें कि हम कॉलम का उपयोग करते हैं lft और आरजीटी ट्रैवर्सल में बाएँ / दाएँ अनुक्रमणिका बनाए रखने के लिए, जब आप एक नई श्रेणी सम्मिलित करते हैं तो आपको निम्न की आवश्यकता होगी:

  1. आईडी के आधार पर मूल श्रेणी की जानकारी प्राप्त करें:tbl_categories से चुनें lft, rgt जहां categoryId=5 उदाहरण के लिए मान लेते हैं कि मूल श्रेणी में lft=7 . था और आरजीटी=10 (इस मामले में उसका पहले से ही एक बच्चा है)

  2. नई प्रविष्टि के लिए जगह बनाएं - सभी रिकॉर्ड्स को 2 से शिफ्ट करें (एलएफटी के लिए 1 और आरजीटी के लिए 1):

    अद्यतन tbl_श्रेणियाँ SET rgt=rgt+2 जहाँ rgt>=10 rgt DESC द्वारा आदेश

    अद्यतन tbl_श्रेणियाँ सेट करें lft=lft+2 जहाँ lft>=10 lft DESC द्वारा आदेश

यहां ध्यान दें आदेश अवरोही। एलएफटी . के रूप में और आरजीटी अद्वितीय माना जाता है, इसे UNIQUE . बनाने की सलाह दी जाती है उन पर प्रतिबंध, और फिर डुप्लिकेट कुंजी त्रुटियों को रोकने के लिए अद्यतन में अवरोही क्रम की आवश्यकता है।

  1. सेट करें एलएफटी=<पूर्व अभिभावक आरजीटी> और rgt=<पूर्व अभिभावक rgt +1> और एक नया रिकॉर्ड डालें...

    INSERT INTO tbl_categories SET categoryName="नया चाइल्ड",parentCategoryId=5,lft=11,rgt=12,...

यदि आप MPTT PHP MySQL . की खोज करते हैं तो आपको कोड के साथ अधिक विस्तृत उदाहरण मिल सकते हैं . इस विषय पर काफी कुछ ट्यूटोरियल हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:समूह के अंदर द्वारा आदेश

  2. WPDB कक्षा में वर्डप्रेस MySQL SQL क्वेरी त्रुटि

  3. टाइमस्टैम्प द्वारा php mysql ऑर्डर गलत है

  4. user_id द्वारा समूहीकृत आदेशों की एक तालिका तैयार करें जो उत्पाद की मात्रा का योग करती है

  5. MySQL समस्या के साथ रेल 3