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

MySQL सभी माता-पिता को पुनरावर्ती रूप से ढूंढता है

आइए मैं आपको एक आइडिया देता हूं। एक फ़ंक्शन बनाएं जो किसी दिए गए आईडी से कई बार parent_id प्राप्त करता है, चलिए इसे जनरेशन कहते हैं। Cat10 पीढ़ी 1 माता-पिता होगी जो CAT5 पीढ़ी 2 CAT3 होगी और इसी तरह।

DROP FUNCTION IF EXISTS getNameIdGeneration;
DELIMITER $$
CREATE FUNCTION getNameIdGeneration(idPar int, generationPar int)
  RETURNS VARCHAR(1000) READS SQL DATA
BEGIN
  DECLARE auxLoopVar INT default 0;
  DECLARE parentIdVar INT default idPar;  
  DECLARE nameVar VARCHAR(1000) default NULL;

  count_loop: LOOP    
    SELECT parent_id INTO parentIdVar FROM Category_parent WHERE Category_id = parentIdVar;
    SET auxLoopVar = auxLoopVar + 1;        
    IF auxLoopVar >= generationPar THEN
      LEAVE count_loop;
    END IF;    
  END LOOP;
  SELECT name INTO nameVar FROM Category WHERE id = parentIdVar;

  RETURN nameVar;
END;
$$
DELIMITER ;

यह मानते हुए कि CAT10 =10 के लिए श्रेणी_आईडी यदि आप दिए गए फ़ंक्शन का परीक्षण करते हैं

select getNameIdGeneration(10, 2);

CAT3

अब आपको केवल एक टेबल चाहिए जिसमें उस कैट की आईडी हो, जिसे आप उसके वंश को जानना चाहते हैं

MariaDB [mydatabase]> select * from test;
+-------------+------------+
| category_id | generation |
+-------------+------------+
|          10 |          1 |
|          10 |          2 |
|          10 |          3 |
+-------------+------------+

MariaDB [mydatabase]> select generation, getNameIdGeneration(category_id, generation) as Name from test;
+------------+------+
| generation | Name |
+------------+------+
|          1 | CAT5 |
|          2 | CAT3 |
|          3 | CAT1 |
+------------+------+
3 rows in set (0.00 sec)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या कई दिनांक स्वरूपों को डेटाटाइम पायथन में बदलने का कोई तरीका है?

  2. ग्रुप बाय क्लॉज में खाली पंक्तियों को वापस करना

  3. SELECT . में उपनाम का पुन:उपयोग करना

  4. UTC समय क्षेत्र को सही करने के लिए वेब और डेटाबेस सर्वर सेटिंग्स

  5. अगर सिंटैक्स त्रुटि