Chci se zeptat, jestli SQL podporuje nějaký příkaz, kterým bych náhodně nechal vybrat hodnotu. Př.::
mám tabulku se sloupcem id a potřebuju, aby se z toho id vybrala jakakoli hodnota - je mi jedno jaka.
Nevi někdo jestli to jde?
Díííííííík!
nevim jestli na to neco ma SQL ale myslim ze to neni potreba..
staci: rand
a pak podle vracene hodnoty vytahnout hodnotu toho ID
rand ti vrati nahodny cislo...
mrkni do manualu
rand uz teda kapu, ale jelikoz v mysql nejsem vubec zadny borec - ani nahodou - a nemam vek na to abych se domak toho, jak podle vracene hodnoty vytahnout hodnotu toho ID... potrbuji NAKOPNOUT!(hodně)
mozna takhle:
select ... from ... order by rand() limit 1
(ale nikdy jsem to nepotreboval, takze nevim, jak moc to chodi)
<?php
$vys = MySQL_Query("SELECT id FROM bauer");
$pocet_radku = MySQL_Num_Rows($vys);
srand((double)microtime()*1000000);
$nahoda = rand (1,$pocet_radku);
$vysledek = MySQL_Query("SELECT url, pocet, soucet, kategorie, text FROM bauer WHERE id = '$nahoda'");
$zaznam = MySQL_Fetch_Array($vysledek);
$url = $zaznam["url"];
$pocet = $zaznam["pocet"];
$soucet = $zaznam["soucet"];
$kategorie = $zaznam["kategorie"];
$text = $zaznam["text"];
?>
tak tdy to mas
moje databaze se jmenuje bauer tak si to prerhod...
URl, pocet, soucet, kategorie a text jsou slopce tak si to uprav
...coz je asi to nejprasactejsi reseni, co nejvic zatezuje jak mysql, tak i webserver. fakt, takhle bych to rozhodne nedelal.
no.. zas tak spatny to neni.. ale neco je tam dost zbytecny
Reseni Petra Steinbauera je vcelku jednoduche, jen prvni dva radky bych vyresil takto :
$pocet_radku = mysql_result(mysql_query("SELECT Count(*) FROM tabulka"),1);
Vyrazne to usetri komunikaci mezi webserverem a mysql serverem, coz je tady na webzdarma obzvlaste podstatne.
Jinak ten priklad neresi to, ze nektera id nemusi byt obsazena. Napr pokud smazete zaznam
DELETE FROM tabulka WHERE id=5;
Tak pristi vlozeny zaznam nebude mit id 5, ale uz 6. A pokud se nahodne vybere petka, nebude to odpovidat zadnemu zaznamu. Samozrejme tam lze dat kontrolu a generovat tak dlouho, az bude nejaky zaznam nalezen, ale to zvysuje provoz webserveru a mysql serveru, coz neni dobre. Pokud se k tomu prida, ze nechceme nahodne vybirat z cele tabulky, ale treba jen WHERE kategorie='3' tak se to cele jeste zkomplikuje. (viz problem na http://www.wz.cz/forum/read.php?f=5&i=1233&t=1233)
Reseni pomoci jedine (nebo nekolika) sql query jsem bohuzel nenasel :-/
Tak jsem se zase pekne vypek. On to Petr Steinbauer dobre vi, - viz onen thread tady v diskuzi. Cili krome onoho urychleni komunikace mezi webserverem a mysql serverem muj predch. prispevek nic noveho nerika.