Mysql
 sql >> Database >  >> RDS >> Mysql

Genera breadcrumb di categorie archiviate in MySQL

Mi piace usare il Percorso materializzato metodo, poiché contiene essenzialmente il tuo percorso breadcrumb e semplifica operazioni come selezionare tutti i discendenti di un nodo senza utilizzare query ricorsive.

Modello di percorso materializzato

L'idea con il modello di percorso materializzato è di collegare ogni nodo nella gerarchia con la sua posizione nell'albero. Questo viene fatto con un elenco concatenato di tutti gli antenati dei nodi. Questo elenco è solitamente archiviato in una stringa delimitata. Nota il campo "Linage" di seguito. 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

Attraversare il tavolo

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;

Elenco

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