Se può consolarti sul libro di Celko la procedura MoveTree occupa tre pagine[supersaibal]Originariamente inviato da andr3a
ok, non dico che dovete postarmi un' unica query che fa tutto[/supersaibal]
(solo la parte di SQL) ed utilizza due tabelle di supporto (una tab. temporanea mentre l'altra in realtà è una view).
Quindi mi viene da pensare che in effetti non sia una procedura cosi semplice ed immediata.
Allora, partendo dalle cose semplici:almeno consigliatemi su come operare ...
cosa e quanto bisogna considerare i livelli ?
il fato di spostarsi da destra a sinistra o viceversa puo' essere un problema risolvibile con operazioni assolute ?
se il nodo da spostare è una foglia ( sx = dx-1 ) in realtà di basta fare una cosa bovina, ossia getNode, poi un delNode ed un addNode basandoti sul getNode iniziale.
Se il nodo invece è la radice di un sottoalbero, ci sono due possibilità:
a) spostando il nodo ti porti dietro anche il sottoalbero;
b) sposti solo il nodo, "promuovendo" di un livello il suo sottoalbero.
La possibilità più utile penso sia la prima, senza contare il fatto che dovrebbe essere anche la più semplice tra le due (se si può parlare di semplicità a questo punto)
Comunque per farla breve, l'unica cosa funzionante (in PHP) che ho visto in giro è questa classe:
http://www.phpclasses.org/browse/file/5191.html
e come vedi anche qui il metodo movenode è il più intricato![]()

[/supersaibal]
Rispondi quotando