Autor Zpráva
mz3n
Profil *
Dobrý den, mám tabulku se seznamem odkazů (na struktuře teď nezáleží). Jedním sloupcem v tabulce je sloupec "position", v tomto sloupci se ukládá informace, na jaké pozici daný záznam je. Každý záznam má jinou pozici (čísla pozic na sebe navazují, tj. nikde neni mezera). Ted není možné, aby jeden záznam měl pozici 1 a další 3 místo 2. Nějakým způsobem pozice přehazuji. Nevím ale jak provést mazání záznamu tak, aby se všechny záznamy s vyšším číslem pozice přečíslovali o 1.
Alphard
Profil
asi bude nutný následný update
např. když smažeš odkaz na pozici 7, tak následně u všech odkazů s pozicí nad 7 updatuješ pozice - 1

edit: jestli to chceš řešit na straně databáze, tak by možná by šly využít uložené procedury nebo triggery, nevím, moc se v tom nevyznám
Kajman_
Profil *
Osobně bych nechal data s mezerami. Těžko to bude něčemu vadit.

Přímo při mazání to můžete udělat podle Alpharda, ale když tam je víc mezer, tak se to dá sesypat snad takhle nějak

set @radek=0;
update odkazy set position=@radek:=@radek+1 order by position;
mz3n
Profil *
Mne mezery vadí, protože když přehazuju položky tak se přehazují pozice
Kajman_
Profil *
To jde i s mezarami. Stačí použít update s order a limitem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: