Objednávky můžete uchovávat jako literály a používat lexikální řazení:
1. A
2. Z
Přidat úkol:
1. A
3. L
2. Z
Přidat další:
1. A
4. B
3. L
2. Z
Přesunout 2 mezi 1 a 4:
1. A
2. AL
4. B
3. L
atd.
Aktualizujete pouze jeden záznam najednou:stačí vzít průměrné písmeno mezi prvními, které se liší:pokud vložíte mezi A
a C
, vezmete B
, pokud vložíte mezi ALGJ
a ALILFG
, vezmete ALH
.
Písmeno vedle existujícího se počítá jako existující zřetězené s písmenem vedle Z
. Tj. pokud potřebujete vložit mezi ABHDFG
a ACSD
F, počítáte to mezi ABH
a AB(Z+)
a napište AB(letter 35/2)
, to je ABP
.
Pokud vám dojde délka řetězce, můžete vždy provést úplnou změnu pořadí.
Aktualizace:
Svá data si také můžete ponechat jako propojený seznam.
Podívejte se na článek na mém blogu o tom, jak to udělat v MySQL
:
Stručně řečeno:
/* This just returns all records in no particular order */
SELECT *
FROM t_list
id parent
------- --------
1 0
2 3
3 4
4 1
/* This returns all records in intended order */
SELECT @r AS _current,
@r := (
SELECT id
FROM t_list
WHERE parent = _current
)
FROM (
SELECT @r := 0
) vars,
t_list
_current id
------- --------
0 1
1 4
4 3
3 2
Při přesouvání položek budete muset aktualizovat maximálně 4
řádky.
Zdá se, že toto je nejúčinnější způsob, jak udržovat uspořádaný seznam, který se často aktualizuje.