Updates zusammenführen

mAu

Erfahrenes Mitglied
Hallo liebe Community!
Ich bin immer noch dabei mein Forum zu schreiben und stoße bei den Nested Sets immer wieder auf Probleme... Das erste mal, dass ich mit ihnen arbeite. Ich hab mir jetzt eine Funktion zusammengebaut, die aus sage und schreibe 16 Querys besteht, um Teilbäume zu verschieben... Daher wollte ich ein paar Querys zusammenfügen, stoße dabei aber auf Probleme...
PHP:
        // Restlichen Board-Baum 'reorganisieren', d.h. lft- und rgt-Werte neu anordnen...
        $diff        = ($rgt - $lft) + 1;
        $update    =    'UPDATE `wgfx_boards`
                                SET `lft` = `lft` - ' . $diff . ', `rgt` = `rgt` - ' . $diff . '
                                WHERE `lft` > ' . $rgt . '
                                    AND `rgt` > ' . $rgt;
        $_db->query($update);     
        
        $update    =    'UPDATE `wgfx_boards`
                                SET `rgt` = `rgt` - ' . $diff . '
                                WHERE `rgt` > ' . $rgt . '
                                    AND `lft` < ' . $lft;
        $_db->query($update); 
// Wollte ich folgendermaßen schreiben:
        // Restlichen Board-Baum 'reorganisieren', d.h. lft- und rgt-Werte neu anordnen...
        $diff        = ($rgt - $lft) + 1;
        $update    =    'UPDATE `wgfx_boards`
                                SET `lft` = IF((`lft` > ' . $rgt . '), (`lft` - ' . $diff . '), `lft`),
                                        `rgt` = IF((`lft` > ' . $rgt . '), (`rgt` - ' . $diff . '),
                                                            IF((`lft` < ' . $lft . '), (`rgt` - ' . $diff . '), `rgt`))
                                WHERE `rgt` > ' . $rgt;
        $_db->query($update);
Klappt aber irgentwie nicht. Die lft- und rgt-Werte sind danach immer total beliebig verteilt... Vielleicht könnt ihr ja mal ein Blick drauf werfen... Es entsteht keine Fehlermeldung oder sonstiges... Die Query wird problemlos ausgeführt, nur wie gesagt, die Werte sind danach total wirr...
 
Zuletzt bearbeitet:
Ich pushe mal... Keiner eine Idee? Wäre schon für ein 'nicht möglich' dankbar :) Achso, vergessen oben zu erwähnen, ich verwende MySQL 5
 
Also mir fällt nur auf dass es in diesem Fall einfach einen Unterschied macht ob du die Updates zusammen oder hintereinander ausführst.

Im ersten Update werden ja teilweise auch schon die lft und rgt-Werte geändert, welche dann im zweiten Update wieder in der Bedingungen vorkommen.
 
Hm... stimmt. Ich hab aber irgentwo mal eine Nested-Set-Klasse gesehen, die das ganze in einer ewig langen Abfrage gemacht hat... Werd mich nochmal ein bisschen damit außeinandersetzen :)
 
Zurück