Autor | Zpráva | ||
---|---|---|---|
budik Profil * |
#1 · Zasláno: 19. 3. 2011, 23:33:01
Zdravim,
v soucasne dobe mam toto: select x from tabulka where pozice=1 ORDER BY RAND() LIMIT 1 select x from tabulka where pozice=2 ORDER BY RAND() LIMIT 1 select x from tabulka where pozice=3 ORDER BY RAND() LIMIT 1 tzn. 3 dotazy. Slo by nejak pouzit jeden dotaz, ktery vybere ke kazde pozici nahodne data? |
||
Kajman_ Profil * |
Pokud znáte všechny pozice, tak stačí ty selecty zazávorkovat a dát mezi ně
union all |
||
budik Profil * |
#3 · Zasláno: 20. 3. 2011, 12:42:26
pozice znam vsechny tedy 1,2,3 mohl by jste mi to prosim napsat jak to myslite? Zkusil jsem (select x from tabulka where pozice=1) union (select x from tabulka where pozice=2) union .... ORDER BY RAND() LIMIT 3 ale to jaksi neni ono
|
||
budik Profil * |
#4 · Zasláno: 20. 3. 2011, 13:06:24
nebo to ma byt (SELECT x from xx where pozice=1 order by rand()) union ....
|
||
Kajman_ Profil * |
#5 · Zasláno: 20. 3. 2011, 13:09:40
Podku vracíte sloupců, tak výsledek bude ve více řádcích
(select x from tabulka where pozice=1 ORDER BY RAND() LIMIT 1) union all (select x from tabulka where pozice=2 ORDER BY RAND() LIMIT 1) union all (select x from tabulka where pozice=3 ORDER BY RAND() LIMIT 1) Pokud jen jeden, tak si můžete udělat i dotaz takovýto select (select x from tabulka where pozice=1 ORDER BY RAND() LIMIT 1) p1, (select x from tabulka where pozice=2 ORDER BY RAND() LIMIT 1) p2, (select x from tabulka where pozice=3 ORDER BY RAND() LIMIT 1) p3 from dual |
||
budik Profil * |
#6 · Zasláno: 20. 3. 2011, 13:16:35
jeste mam jeden dotaz jakej ma vyznam to union ALL - protoze mi to jde i bez toho all
|
||
Kajman_ Profil * |
#7 · Zasláno: 20. 3. 2011, 13:19:25
bez all to může nepřidat řádke, pokud už takový je z minula, při all se přidá vždy (a nemusí se kontrolovat), zkuste si obě varianty
select 'x' from dual union -- all select 'x' from dual |
||
Časová prodleva: 14 let
|
0