sql >> Database >  >> RDS >> Mysql

Hiërarchiegegevens ophalen uit zelfverwijzende tabellen

Als de database SQL 2005 / 2008 is, dan...

De eenvoudigste manier om dit te krijgen, is door een CTE (Common Table Expression) te gebruiken die is ontworpen om te herhalen.

 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

De uitvoer is als volgt:

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

Van daaruit kun je het formatteren zoals je wilt.



  1. PRINT-instructie in T-SQL

  2. Hoe SqlCommand te gebruiken om DATABASE TE MAKEN met geparameteriseerde db-naam?

  3. Topbronnen voor leren en trainen van PostgreSQL

  4. Lijst<> doorgeven aan SQL Stored Procedure