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

Získávání dat hierarchie ze samoodkazujících tabulek

Pokud je databáze SQL 2005 / 2008, pak...

Nejjednodušší způsob, jak toho dosáhnout, je použít CTE (Common Table Expression), který je navržen tak, aby se opakoval.

 WITH myCTE (Item_id, Depth)
 AS
 (
    Select Item_ID, 0 as Depth From yourTable where Item_Parent=0
    Union ALL
    Select yourTable.Item_ID, Depth + 1 
    From yourTable 
    inner join myCte on yourTable.item_Parent = myCte.Item_Id
 )

 Select Item_id, Depth from myCTE

Výstup je následující:

Item_Id  Depth
    1   0
    2   0
    3   1
    4   1
    5   2

Z toho jej můžete naformátovat, jak chcete.



  1. Jak provést stejnou agregaci na každém sloupci, aniž byste uváděli sloupce?

  2. MySQL5.6 uvízl na procesu, který se pokouší spustit službu

  3. Pružinová data JPA pouze jeden složený klíč je problém s automatickým zvýšením

  4. Zálohujte databázi(y) pomocí dotazu bez použití mysqldump