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

इस तरह की तालिका से पदानुक्रम पुनर्प्राप्त करें

इस संग्रहित प्रक्रिया को आजमाएं

CREATE PROCEDURE updatePath(in itemId int)
BEGIN
    DECLARE cnt int default 0;
    CREATE temporary table tmpTable 
    (
       `id` int, `name` varchar(15), `parent` int, path varchar(500)  
     )engine=memory select id, name, parent, name AS 'Path' from tbl where id = itemId;
    select parent into cnt from tmpTable;

    while cnt <> 0 do
       Update tmpTable tt, tbl t set tt.parent = t.parent, 
              tt.path = concat(t.name, ' > ', tt.path)
       WHERE tt.parent = t.id;
       select parent into cnt from tmpTable;
    end while;
    select * from tmpTable;
    drop table tmpTable;
END//

क्वेरी 1 :

call updatePath(10)

SQL FIDDLE :

| ID |            NAME | PARENT |                                                       PATH |
----------------------------------------------------------------------------------------------
| 10 | "Smear em meat" |      0 | "Kitchenware" > "Knives" > "Meat Knives" > "Smear em meat" |

आशा है कि यह मदद करता है



  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. तालिकाओं के बीच mysql चाल पंक्ति

  3. सिम्फनी 2 सिद्धांत पीडीओ MySQL कनेक्शन लोड डेटा स्थानीय इनफाइल के साथ

  4. MySQL वर्कबेंच क्वेरी में टिप्पणी फ़ॉन्ट रंग बदलें

  5. तालिका में डुप्लिकेट प्रविष्टियाँ हटाएं