sql >> Databáze >  >> RDS >> Mysql

Načíst hierarchii z tabulky, jako je tato

Zkuste tuto uloženou proceduru

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//

Dotaz 1 :

call updatePath(10)

SQL FIDDLE :

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

Doufám, že to pomůže



  1. Odeslání e-mailu ze spouštěče MySQL při aktualizaci tabulky

  2. PHP MySQL řecká písmena zobrazující se jako ???? značky

  3. JPA:Vztah mnoho k mnoha - JsonMappingException:Nekonečná rekurze

  4. Python, převést 9 n-tice data UTC do formátu data a času MySQL