sql >> Database >  >> RDS >> Mysql

SQL Self-join-query? Hoe krijg ik categorieën subcategorieën?

Voor een maximale diepte van 6 (inclusief wortel), kunt u deze gebruiken

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

Breid het patroon indien nodig uit voor langere maximale diepten.



  1. Hoe MAX() te gebruiken voor een subqueryresultaat?

  2. MySQL:weergave met subquery in de FROM-clausulebeperking

  3. Hoe de conversieratio berekenen in MySQL?

  4. Is er een tijdelijke oplossing voor het definiëren van een unieke beperking die NULL-waarden als niet-onderscheiden behandelt?