Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Vlastne poradie zaznamov

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Vlastne poradie zaznamov

Autor: P

16:09:56 01.09.2011

Proste setrepes poradi vyssi nez ma mazany zaznam ve stejne urovni o 1 dolu:
[code]
UPDATE Tabulka
SET Poradie = Poradie - 1
WHERE Poradie > @Poradie AND Rodic = @Rodic
[/code]
Jeste ale musis smazat deti mazaneho zaznamu, jejich deti atd. To se da zajistit pomoci FK.

Citovat příspěvek

 

Vlastne poradie zaznamov

Autor: Michal Krchnak

15:00:53 01.09.2011

Zdravim,

som zaciatocnik v mysql. mam tabulku (MySQL databaza) s polozkami ktore chcem zoradovat podla seba. Rodic "0" znamena najvysiu uroven.
Tabulka:

ID | MENO | PORADIE | RODIC
------------------------------------
1 Abc 1 0
2 Bcd 2 0
3 Asd 3 0
4 Pol 1 3
5 Sku 2 3
6 Rfg 4 0

Potreboval by som prosim poradit ako sa daju napr. po vymazani jednej polozky precislovat polozky, tak aby som mal PORADIE vzdy postupne od 1 do X. Cize ak vymazem druhu polozku "Bcd" ostanu mi polozky 1,3 a 4 (v urovni 0) a potreboval by som ich precislovat na 1,2,3.

Nasiel som toto, co som si upravil tak aby to zoradovalo len v prislusnej urovni (RODIC):

SET @`OWNER` = 0;
SET @`PORADIE` = 0;
UPDATE `pages` SET `PORADIE` = (@`PORADIE`:= IF(`RODIC` = @`RODIC`, @`PORADIE`, (@`RODIC`:= `RODIC`) - `RODIC`) + 1) WHERE `RODIC` = '0' ORDER BY `RODIC`, `ID`;

Lenze problem je v tom ze tento dotaz nezohladnuje poradie ake bolo v databaze, ale precislovava polozky tak ako su porade ulozene v databaze, to znamena, ze ak by som mal prve tri polozky v databaze ulozene takto:

ID | MENO | PORADIE | RODIC
------------------------------------
1 Abc 1 0
2 Bcd 3 0
3 Asd 2 0

tak po pouziti mojho dotazu pri to skocilo takto:

ID | MENO | PORADIE | RODIC
------------------------------------
1 Abc 1 0
2 Bcd 2 0
3 Asd 3 0

co je neprijatelne. Preto sa pytam ci sa neda nejako upravit dotaz tak aby bral do uvahy poradie predtym, len by precisloval polozky aby tam neboli medzery, pripade ak na to existuje iny sposob budem vdacny.

Manualne prechadzanie riadkov a cislovanie by sice bolo riesenie, ale asi to nebude uplne koser.

Dakujem za rady

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: