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

नोड्स ट्री से योग प्राप्त करें

एलटीआरई

आप लगभग सही रास्ते पर हैं। आप डेटाबेस में पदानुक्रमित डेटा संग्रहीत करने की 'LTREE' प्रणाली पर लगभग ठोकर खा चुके हैं। आपको बस थोड़ा सा संशोधन करने की जरूरत है। बस इतना ही।

आपकी टेबल कुछ इस तरह दिख सकती है:

CREATE TABLE Table1
    (`id` int, `parent_id` int, `name` varchar(13),
     `path` char(10),
     `money` int)
;

और आपका डेटा ऐसा दिखाई दे सकता है।

(1, 0, 'company 1', '1', 10),
(2, 1, 'child 1', '1.1', 10),
(3, 2, 'child 2', '1.1.1', 10),
(4, 1, 'child 3', '1.2', 10,),
(4, 1, 'company 2', '2', 10),
(4, 1, 'child 2.1', '2.1', 10)

पथ कॉलम यह पहचानने में मदद करता है कि कौन सी कंपनी किसी अन्य कंपनी की सहायक कंपनी है। ध्यान दें कि आपके पास वास्तव में allmoney की आवश्यकता नहीं है कॉलम। यह गतिशील रूप से उत्पन्न होता है।

और आप पहली कंपनी के सभी पैसे कैसे ढूंढते हैं?

select sum(money) from Table1 where path >= '1' and path < '2'

ध्यान दें कि हमने जो संरचना बनाई है, उसमें चाइल्ड 1 चाइल्ड 2 का जनक है। तो हम बच्चे1 के लिए पूरा पैसा कैसे खोजते हैं?

select sum(money) from Table1 where path >= '1.1' and path < '1.2'

केवल एक प्रश्न है और कोई पुनरावर्तन नहीं है।

एमपीटीटी

पदानुक्रमित डेटा प्राप्त करने के लिए एक अन्य लोकप्रिय तरीका संशोधित पूर्व-आदेश ट्री ट्रैवर्सल का उपयोग करना है। Sitepoint पर एक उत्कृष्ट लेख रहा है। कई वर्षों के लिए जो बताता है कि यह बहुत सारे नमूना कोड के साथ कैसे किया जाता है।



  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 में VARCHAR और TEXT के बीच अंतर

  2. डालने से पहले मैं दो स्थितियों की जांच कैसे कर सकता हूं?

  3. मलयालम में मैसकल में डेटा सम्मिलित करना

  4. क्या मुझे mysql_real_escape_string का उपयोग करके अपेक्षित पूर्णांक मान से बचना चाहिए या क्या मैं केवल (int)$expectedinteger का उपयोग कर सकता हूं

  5. अन्य स्तंभ मान पर निर्भर स्तंभ