Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Gerar breadcrumbs de categorias armazenadas no MySQL


Gosto de usar o Caminho materializado , pois ele contém essencialmente sua trilha de navegação e facilita fazer coisas como selecionar todos os descendentes de um nó sem usar consultas recursivas.

Modelo de caminho materializado

A ideia com o modelo de caminho materializado é vincular cada nó na hierarquia com sua posição na árvore. Isso é feito com uma lista concatenada de todos os ancestrais de nós. Essa lista geralmente é armazenada em uma string delimitada. Observe o campo "Linage" abaixo. CAT_ID NAME CAT_PARENT Lineage 1 Home . 2 product 1 .1 3 CD’s 2 .1.2 4 LP’s 2 .1.2 5 Artists 1 .1 6 Genre 5 .1. 5 7 R&B 6 .1. 5.6 8 Rock 6 .1. 5.6 9 About Us 1 .1

Percorrendo a tabela
Select lpad('-',length(t1.lineage))||t1.name listing
From category t1, category t2
Where t1.lineage like t2.lineage ||'%'
    And t2.name = 'Home';
Order by t1.lineage;

Listagem
Home
-product
–CD’s
–LP’s
-Artists
–Genre
—R&B
—Rock
-About Us