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

नेस्टेड सेट ट्री में नोड ले जाएँ

यहां एक समाधान है जो आपको केवल एक इनपुट पैरामीटर - नोड की नई बाईं स्थिति (newpos) के साथ पेड़ में किसी भी स्थिति में नोड को स्थानांतरित करने देता है।

मूल रूप से तीन सेट हैं:

  • सबट्री के लिए नया स्थान बनाएं।
  • सबट्री को इस स्पेस में ले जाएं।
  • उप-वृक्ष द्वारा खाली किए गए पुराने स्थान को हटा दें।

psuedo-sql में, यह इस तरह दिखता है:

//
 *  -- create new space for subtree
 *  UPDATE tags SET lpos = lpos + :width WHERE lpos >= :newpos
 *  UPDATE tags SET rpos = rpos + :width WHERE rpos >= :newpos
 * 
 *  -- move subtree into new space
 *  UPDATE tags SET lpos = lpos + :distance, rpos = rpos + :distance
 *           WHERE lpos >= :tmppos AND rpos < :tmppos + :width
 * 
 *  -- remove old space vacated by subtree
 *  UPDATE tags SET lpos = lpos - :width WHERE lpos > :oldrpos
 *  UPDATE tags SET rpos = rpos - :width WHERE rpos > :oldrpos
 */

:distance वेरिएबल नए और पुराने पदों के बीच की दूरी है, :चौड़ाई सबट्री का आकार है, और :tmppos का उपयोग अपडेट के दौरान स्थानांतरित किए जा रहे सबट्री का ट्रैक रखने के लिए किया जाता है। इन चरों को इस प्रकार परिभाषित किया गया है:

// calculate position adjustment variables
int width = node.getRpos() - node.getLpos() + 1;
int distance = newpos - node.getLpos();
int tmppos = node.getLpos();
        
// backwards movement must account for new space
if (distance < 0) {
    distance -= width;
    tmppos += width;
}

एक संपूर्ण कोड उदाहरण के लिए, मेरा ब्लॉग देखें

https://rogerkeays.com/how -टू-मूव-ए-नोड-इन-नेस्टेड-सेट्स-साथ-एसक्यूएल

अगर आपको यह समाधान पसंद आया हो, तो कृपया अप-वोट करें।



  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. डेटाबेस में उपयोगकर्ता भूमिकाओं का प्रबंधन कैसे करें?

  3. एक MySQL डेटाबेस में क्यूआर कोड ट्रांसफर करें

  4. एक सामान्य क्षेत्र के साथ MySQL में तालिकाओं में शामिल होना लेकिन सामान्य क्षेत्र के लिए अलग-अलग मान

  5. क्या SQL सर्वर MySQL के ON DUPLICATE KEY UPDATE की तरह कुछ भी ऑफर करता है?