Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abrufen von Hierarchiedaten aus selbstreferenzierenden Tabellen

Wenn die Datenbank SQL 2005/2008 ist, dann...

Der einfachste Weg, dies zu erreichen, ist die Verwendung eines CTE (Common Table Expression), der auf Rekursion ausgelegt ist.

 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

Die Ausgabe sieht wie folgt aus:

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

Von dort aus können Sie es nach Belieben formatieren.