Originariamente inviato da stiffa
Come posso risolvere?
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.
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:
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
Così quando hai bisogno dei nodi foglia di C ti basta fare:
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!