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

Zapytanie o samodzielne sprzężenie SQL? Jak zdobyć kategorie podkategorie?

Aby uzyskać maksymalną głębokość 6 (w tym root), możesz użyć tego

select l0.catID,
    concat(
      case when l5.catID is null then '' else concat(l5.category, '/') end
    , case when l4.catID is null then '' else concat(l4.category, '/') end
    , case when l3.catID is null then '' else concat(l3.category, '/') end
    , case when l2.catID is null then '' else concat(l2.category, '/') end
    , case when l1.catID is null then '' else concat(l1.category, '/') end
    , l0.category)
from catcat l0
left join catcat l1 on l0.parentID=l1.catID
left join catcat l2 on l1.parentID=l2.catID
left join catcat l3 on l2.parentID=l3.catID
left join catcat l4 on l3.parentID=l4.catID
left join catcat l5 on l4.parentID=l5.catID

Rozwiń wzór zgodnie z wymaganiami, aby uzyskać dłuższe maksymalne głębokości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź wartości, które nie zawierają liczb w MySQL

  2. SELECT z widoku MySQL z klauzulą ​​HAVING zwraca pusty zestaw wyników

  3. MySQL i Java — Uzyskaj identyfikator ostatnio wstawionej wartości (JDBC)

  4. Jak obciąć tabelę za pomocą Doctrine?

  5. Jak testować tabele powiązane z kluczami obcymi?