Autor Zpráva
Jehla
Profil
Nevím ani jak toto téma pojmenovat.
Jde mi o to že mám db tabulku kategorií.

id - nazev - rodic - priorita
1 Ovoce 0 0
2 Zeleni 0 0
3 Jablko 1 0
4 Hruška 1 0
5 Banán 1 0

Hodnota sloupce priorita je standartně 0.
Ale v určité situaci bych potřeboval, aby se hodnoty ve sloupci priorita očíslovaly incrementálně.
Například: Aby všechny záznamy, které mají rodiče 1, měly prioritu postupně 1,2,3. Nejlépe abecedne podle sloupce nazev.
Tak aby tabulka vypadala takto:

id - nazev - rodic - priorita
1 Ovoce 0 0
2 Zeleni 0 0
3 Jablko 1 3
4 Hruška 1 2
5 Banán 1 1

Dá se to udělat nějak jednoduše MySQL příkazem? Nebo si to musím ošetřit v PHP a posílat tam v cyklu UPDATE?

Další podobný dotaz ktomuto. Dají se nějak jednoduše zaměnit hodnoty "priorita"? Jako že je otočit? vymenit hodnoty priority záznamu s id 4 se záznamem id 5??

Dík
Kajman_
Profil *
např.

set @radek=0;
update odkazy set priorita=@radek:=@radek+1 where rodic=1 order by nazev;


A na na druhý problém Vám nestačí dva updaty? Jeden přičte a jeden odečte jedničku.

Asi by to šlo i takto
update odkazy t1, odkazy t2
set    t1.v = t2.v
where  t1.id in (4, 5)
       and t2.id in (4, 5)
       and t1.id != t2.id;
Jehla
Profil
Jojo, přesně to jsem potřeboval. Dík :-)
Anonymní
Profil *
Mám také dotaz ohledně inkrementace

pripoj_se();
//přečtení současného stavu
$c="SELECT * FROM `pocitadlo` WHERE `televize` LIKE '$soubor'";
$res=mysql_query($c);
$zaznam=MySQL_Fetch_Array($res);
$pocet=$zaznam["pocet"];
$pocet2=++$pocet;
//zápis o jedna vyšší
$update="update pocitadlo set pocet='$pocet2' where televize='$soubor'";
$res2=mysql_query($update);

Z tabulky počítadlo se přečte řádek, kde název ve sloupci televize je roven proměnné soubor. Potom se do proměnné pocet uloží stávající počet přístupů, zvýší se o 1, hodnota se uloží do proměnné pocet2 a zapíše se zpět do databáze.
Při přístupu na stránku z externího odkazu či záložky se však nic nestane, je to funkční jen po refreshi stránky. Nevíte, čím by to mohlo být? Nemůžu najít žádnou logickou chybu...
Kajman_
Profil *
Není to jen tím, že si prvně načtete data a pak je teprve upravíte? :-)

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: