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

Hentning af hierarkidata fra selvrefererende tabeller

Hvis databasen er SQL 2005 / 2008, så...

Den nemmeste måde at få dette på er at bruge en CTE (Common Table Expression), der er designet til at gentage sig.

 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

Outputtet er som følger:

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

Derfra kan du formatere det som du ønsker.



  1. Find det rigtige kolonnenavn på et alias, der bruges i en visning?

  2. MariaDB USER() Forklaret

  3. Ændring af størrelse på PHP-billede

  4. Hvordan ændrer man alle objekters ejerskab i et bestemt skema i PostgreSQL?