Uz par dnu se snazim zmenit poradi prvku v nested set modelu, ale bez uspechu.
Interval <7;16> se snazim preradit v <6;23> na prvni misto
Když jsem tuto úlohu onehdá řešil, tak jsem si to srovnal na tyto čtyři scénáře:
1/ přidání prvku
2/ odebrání prvku
3/ přesun prvku dolů
4/ přesun prvku nahoru
Ve tvém případě to bude tedy přesun nahoru, jestli jsem to dobře pochopil (když tak mě oprav).
To znamená
- vytvořit místo, kam se přesunou prvku
- přesunout prvky
To znamená zjistit jak široký je uzel který přesouváš, to znamená
rgt - lft, to znamená jeden SELECT =
size.
To znamená zjistit offset přesouvaného uzlu, to znamená jeden SELECT =
offset.
Následně UPDATE, které přečísluje všechny uzly, kterou jsou větší jak začátek umístění o
size (včetně uzlu, který budeš přesouvat).
Následně UPDATE, které přečísluje přesouvaný uzel: původní lft = lft - offset. (Offset si můžeš vypočítat na začátku, nebo po přesunu - jde oboje.)
Plus samozřejmě by se to dalo různě optimalizovat.