Autor | Zpráva | ||
---|---|---|---|
chaos Profil * |
#1 · Zasláno: 11. 3. 2008, 15:42:23
Nekamenujte mě, ale chci se zeptat na dotaz, který měl asi každý, kdo s mysql začínal. Zatím jsem nikde nenašel uspokojivou odpověď a moje pokusy končily chybou.
Jde o to, že potřebuju, aby hodnoty tabulky byly seřazeny podle ID od 1 až po max. Jak toto ID naplňovat? - nejdřív jsem to dělal pomocí cyklu for. Pak jsem se dočetl o deklaraci ID INTEGER AUTO_INCREMENT, a čekal, že nyní se ID naplní samo. A ono ne...místo toho mi to všechny položky vyplnilo na NULL. Jak ID udržovat - pokud smažu řádek tabulky, tak aby se všechny vyšší hodnoty zmenšily o 1. Vím jak bych tohle všechno vyřešil v PHP přes cykly, ale ptám se, jestli na to nemá databáze nějaké vestavěné elegantní řešení. Pokud je tento dotaz z kategorie těch ... tak mi prosím alespoň hoďte link, kde se tohle řeší. Několik odkazů jsem už četl, ale žádný mi nepomoh Pokud jde o tenhle návod, tak tomu nevím ani hlavu, ani patu set @radek=0 select @radek:=@radek+1 rownum, t.* from tabulka t Nebo s použitím vnořeného dotazu (4.1+)... select @radek:=@radek+1 rownum, t.* from (select @radek:=0) r, tabulka t |
||
jaco Profil |
#2 · Zasláno: 11. 3. 2008, 15:46:05
Pre dobro tabuľky je prakticky zbytočné ID udržovať, ja sa spolieham čisto na auto_increment.
|
||
chaos Profil * |
#3 · Zasláno: 11. 3. 2008, 15:49:18
ok, ale ja nevím, jak k tomu auto%incrementu přistoupím
|
||
chaos Profil * |
#4 · Zasláno: 11. 3. 2008, 16:07:36
abych to upřesnil
nastavil jsem mysql_query ("create table prvni ( ID INTEGER AUTO_INCREMENT, NAZEV varchar(80))"); a od té doby mi tenhle příkaz $pocet = mysql_result(mysql_query("SELECT COUNT(ID) FROM prvni"), 0); hazí chybu mysql_result(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP\www\MySQL\index.php on line 18 |
||
jaco Profil |
#5 · Zasláno: 11. 3. 2008, 16:08:03
No poľu ID nastavíš auto_increment, a potom, vždy keď vkladáš riadok a neuvedieš ID, nastaví sa automaticky o jedna väčší, ako pri poslednom vkladanom.
Samozrejme, keď vymažeš riadok v strede tabuľky, tak sa ostatné ID nemenia, proste máš v nich "dieru". Ale to databáze nevadí, a ak to nevadí ani tvojej aplikácii, tak to nechaj tak. |
||
Kajman_ Profil * |
#6 · Zasláno: 11. 3. 2008, 16:10:30
ID musí být primární klíč, aby se auto_increment použil.
|
||
chaos Profil * |
#7 · Zasláno: 11. 3. 2008, 16:14:54
OK, to funguje. Zbývá vyřešit poslední problém. Po odebrání hodnoty přečíslovat ostatní řádky. To autoincrement neudělá. Mám to tedy udělat cyklem?
|
||
Kajman_ Profil * |
#8 · Zasláno: 11. 3. 2008, 16:16:29
Nedělá se to.
|
||
Časová prodleva: 16 let
|
0