sql >> Database teknologi >  >> RDS >> Mysql

Hent hierarki fra en tabel som denne

Prøv denne lagrede procedure

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

Forespørgsel 1 :

call updatePath(10)
 

SQL FIDDLE :

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

Håber dette hjælper



  1. Opdatering af tabelskema uden at påvirke data i Laravel

  2. Jeg vil indlæse billede fra databasen til en billedboks ved hjælp af LoadAsync og en MemoryStream

  3. Brug af MySqlConnection (.NET) til SSL-forbindelse til MySql-server mislykkes fra visse klienter

  4. Indsættelse af dato fra formular ved hjælp af PHP Mysql