Ciao una soluzione - un po' rozza ma funzionale - che mi viene in mente è aggiungere un campo CHAR alla tua tabella dove dai un id univoco che tiene traccia dei parent.Originariamente inviato da stiffa
Come posso risolvere?
Praticamente per ogni ramo figlio concateni al treepath del parent '0' per il primo ramo figlio, '1' per il secondo ramo figlio, ecc. quando arrivi a 9 parti con le lettere 'a', 'b', ecc
nel tuo esempio:
Così quando hai bisogno dei nodi foglia di C ti basta fare:Codice PHP:Id ownerEl slave name treepath
1 0 0 A 1
2 1 1 B 10
3 1 0 C 11
4 3 1 D 111
5 3 1 E 112
Root
|
|
__ A_____
| |
| |
*B _ #C__
| |
| |
*D *E
codice:SELECT name, descrizione, prezzo FROM tree_elements WHERE treepath like '11%' AND slave=1;
Inoltre... ti consiglio di cambiare nome alla colonna slave perchè 'slave' è una keyword di mysql e non è mai saggio usare delle keyword come nome per un campo....
potresti chiamarla -come si usa - leaf (foglia) perché se hai un albero i nodi che sotto di sé non hanno nulla non sono rami bensì foglie!

Rispondi quotando