Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobieranie danych hierarchii z tabel samoodnoszących się

Jeśli bazą danych jest SQL 2005/2008, to...

Najłatwiejszym sposobem na uzyskanie tego jest użycie CTE (Common Table Expression), które jest zaprojektowane do rekurencji.

 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

Dane wyjściowe są następujące:

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

Od tego momentu możesz go sformatować, jak chcesz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lista wszystkich procedur MySQL

  2. usuń wiersz w mojej bazie danych za pomocą php pdo

  3. Błąd MySQL/Amazon RDS:nie masz uprawnień SUPER...

  4. Czy MySQL powinien mieć swoją strefę czasową ustawioną na UTC?

  5. mysql wybierz dynamiczne wartości wierszy jako nazwy kolumn, inną kolumnę jako wartość