Autor | Zpráva | ||
---|---|---|---|
Europsky_Dzigolo Profil |
#1 · Zasláno: 15. 8. 2009, 17:25:33
mam sql prikaz
SELECT * FROM `tabulka` WHERE `hento`='toto' ORDER BY `id` DESC LIMIT 5 ak to zvyraznene vymazem, nezobrazi sa nic ako mam napisat aby sa to nahodne zoradilo? |
||
Nox Profil |
#2 · Zasláno: 15. 8. 2009, 17:29:59
ORDER BY RAND()
když to vymažeš, nezobrazí se nic, protože ti tam zůstane ještě to "DESC" |
||
nightfish Profil |
#3 · Zasláno: 15. 8. 2009, 17:31:16 · Upravil/a: nightfish
„ak to zvyraznene vymazem, nezobrazi sa nic “
protože ti tam zůstane to "DESC", které se váže k ORDER BY můžeš zkusit ORDER BY rand(), ale to může být v závislosti na velikosti tabulky dost pomalá varianta... EDIT: pozdě |
||
joe Profil |
#4 · Zasláno: 15. 8. 2009, 17:32:47 · Upravil/a: joe
Pokud máš tabulku s malým počtem řádků
SELECT * FROM `tabulka` WHERE `hento`='toto' ORDER BY RAND() LIMIT 5 Pokud řádků máš hodně, pak použij toto SELECT COUNT(*) FROM tabulka V PHP vybereš náhodné číslo od 0 do tohoto počtu -1 a uložíš třeba do proměnné $start. Pak další dotaz bude SELECT * FROM `tabulka` WHERE `hento`='toto' LIMIT $start, 5 EDIT: Opraveno. |
||
Europsky_Dzigolo Profil |
#5 · Zasláno: 15. 8. 2009, 17:39:45
diky vam
|
||
Europsky_Dzigolo Profil |
#6 · Zasláno: 15. 8. 2009, 20:37:59
joe
SELECT COUNT(*) FROM tabulka ale ved COUNT len spocita pocet hodnôt.. to nijak asi neurychli.. ci hej? nechapem |
||
Alphard Profil |
#7 · Zasláno: 15. 8. 2009, 20:44:28 · Upravil/a: Alphard
joe:
Pokud si vzpomínám, není nutné generovat to v PHP, ale stačí v MySQL použít poddotaz a vybrat náhodné hodnoty ze sloupce, na kterém je index, typicky id. Přiznám se, že ten LIMIT $start, 5 nechápu, takže jsem možná úplně mimo. select * from tabulka where id in (select id from tabulka where `hento`='toto' order by rand() limit 5) Doplňuji, už jsem to pochopil. .-) Je to dobrý nápad, ale použitelný jenom pokud nám nevadí, že všechny záznamy půjdou za sebou. |
||
Časová prodleva: 15 let
|
0