Je nějakej příkaz, jak seřadit ID v tabulce. Mám třeba ID 1,2,3 vymažu 2 a chci, aby mi to seřadilo ty ID takže to z 3 udělá 2.
Když se ti vymaže ID 2, tak mám pocit, že to nijak ani nejde, aby se z 3 udělalo 2. Dej si normálně řazení ORDER BY ID DESC nebo ASC.
Petr
Jestli používáš ID jako zobrazené číslování záznamů můžrš proto poiužít i while
to co chces je nesmysl...
kdyz jsem kdysi s Mysql zacinal take jsem chtel tohle delat a nechapal jsem proc se indexy nepremeni po umazani nektereho z nich..
pozdeji jsem pochopil ze to je nesmysl a vubec nic takoveho neni potreba
napis proc to potrebujes a rad ti odpovim jak to udelat jinak a proc ty ID nemenit
to master ... nesmysl to neni
např ... mám tabulku koncertů a jeden mi vypadne .... třeba dvojka ... a já potřebuju aby se mi indexi seřadily buď vzestupně, nebo sestupně ... poradil sem si takhle :
$query ="select * from koncerty";
$result = mysql_query($query);
$pocet_radku= mysql_num_rows($result);
for ($x=1;$x<$pocet_radku;$x++):
$poradi = mysql_result($result,$x,id);
$pole[$x] = $poradi;
endfor;
for ($x=1;$x<$pocet_radku;$x++):
$query = "update koncerty set id = $x where id = $pole[$x]";
mysql_query($query);
endfor;
asi to neni úplně elegantní, ale funguje to. lpři vyhození nějakýho koncertu se mi setřídí do pole stávající indexi v tabulce a ty pak cyklem změnim na indexi vzestupně za sebou.
jestli to de líp, tak dej vědět.
san-raal
A co se ti na tom jako na tom neseradi kdyz ty ID nejdou po sobe jeden po druhym?
Myslim ze kdyby tohle Mira videl by moc nadseny!
kdyz pozadujes koncerty serazeny DESC,ASC a vypisujes je tak snad pouziju promennou a neseru do poradniku Mysql ne?
$sql = mysql_query("SELECT * FROM tabulka ORDER BY id DESC");
$i = 0;
while($row = mysql_fetch_row($sql))
{
echo "$i : $row[0] - $orw[1]...."
$i++;
}
nepripada ti to jako lepsi reseni?
BTW: index neni ID
proč by měl bejt nadšenej ? pokud je to spojení uš otevřený, tak nevidim důvod proč si první položku řádku, která je vedená jako index neseřadit tak, jak se mi to hodí ? já v tom problém nevidim. Jestli admin jo, tak ať mi napíše ... ale jak říkám ... jestli uš jednou to spojení mám, tak nevidim důvod proč to tak neudělat.
spojeni nespojeni... jestli sis nevsiml tak driv zadal usery at pouzivaji indexy (jestli vis co to je) a jiz z toho se da odvodit ze to co delas je zatez jako prase...
muzes mi rict proc ti to nestaci tak jak jsem to napsal?
neříkám, že to nestačí ...
ale jaká je to zátěž, když s tý tabulky načtu ..... u sebe to sesortim .... a pak to tam zapíšu ? vždyť to je stejný jako když to tam zapíšu rovnou bez toho sortování ... já v tom nevidim problém ...
načtu do pole ...... u sebe ....
pak to sesortim .... u sebe ...
pak to zapíšu .... u nich ...
pouhé čtení a zápis ... gde je problém ?
jen sem si vzpoměl ... asi to sem nepatří, ale přišly mi logy na cizí účet ..... od podpory .... nevíš co to? hihi já je nechci a taky sem jim to napsal, ale zatim žádná vodezva ...
to jen tak pro skrácení dlouhý chvíle
ach jo...
nehodlam to uz resit, jak vidim je to s tebou marny
marný nebo ne ....
sám sis vytvořil problém ..... taxe s tim smiř.
Myslím, že master nevytvořil problém.
Není JEDINY relevantni důvod, proč předělávat indexování a i když to třídíš u sebe, jak říkáš, tak to u sebe neděláš, ale dělá to stroj na kterým fachá PHP a třídění poněkdu větší databáze u pár uživatelů zaráz by ho dokázalo docela zabavit. A zadruhé je jedno, jestli to třídíš u sebe, neboť pak u databáze se 100 položkama uděláš 100 UPDATů, což je další totální prasárna, neboť pokuď na té tabulce máš třeba další index, zatíží se tím stroj několikanásoně víc.
Pokud mi napíšeš nějaký rozumný důvod, proč to přestřiďovat, dej vědět.
Andrew: dekuji, uprime jsem doufal ze se pripoji nekdo dalsi a vysvetli mu jak ten jeho kod vlastne funguje.. doufal jsem ze mi bude verit ale mylil jsem se...
Master:
neni to tim, že bych ti nevěřil .... jenom sem řešil ten problém ...
:Je nějakej příkaz, jak seřadit ID v tabulce. Mám třeba ID 1,2,3 vymažu 2 a chci, aby mi to seřadilo ty ID takže to z 3 udělá 2:
ale jinak máš pravdu .... :-) tvoje řešení je elegantnější.
díky Adrew a Master.
Opravdu si nemyslím, že by byl nějaký důvod reindexovat id v databázi. Řešení, který tady navrhl Master je podle mě dostatečné a vystačí s minimen dotazů. Navíc, pokud by existovaly další tabulky, které používají toto id, pak by se musely aktualizovat i ty.
Možnost řazení u příkazu SELECT je dobrá vlastnost a věřím, že tvůrci MySql by reindexaci udělali, kdyby to bylo k něčemu dobré.
>Navíc, pokud by existovaly další tabulky, které používají toto id, pak by se musely aktualizovat i ty.
vyborne.. to me jako argument ani nenapadlo.. good
>Možnost řazení u příkazu SELECT je dobrá vlastnost a věřím, že tvůrci MySql by reindexaci udělali
reindexaci? pletes si pojem index a ID!
index je u databazi neco jineho nez id
jinak at premyslim jak premyslim nenapada me duvod proc menit posloupnost autoincrementu...
to by me vazne zajimalo k cemu to muze slouzit..
2Master:
Treba ma pocit, ze mu ten smazany zaznam mezi 1 a 3 zabira stale misto.
Kdyz si predstavis takove obycejne pole [array] nebo tabulku v excelu a ocekavas, ze se databaze chova stejne (coz je zasadni chyba), tak ti to zrejme bude taky vadit.
to je dobry priklad...
ale tak se myslet opravdu nemuze jak rikas :)))