Autor | Zpráva | ||
---|---|---|---|
Kamil Papica Profil * |
#1 · Zasláno: 19. 11. 2015, 18:29:37
Zdravím Vás,
je možné spojiť 3 SELECTy cez UNION tak, aby boli SELECTy zoradené náhodne? Ako príklad uvediem tabuľku (ALBUMS): ID, NAME, YEAR, DESCRIPTION. Mojim cieľom je získať záznamy z tabuľky albums tak, aby boli rozdelené na 3 skupiny: má "YEAR" A ZAROVEN ma "DESCRIPTION" (zoradené náhodne) + má buď "YEAR" ALEBO "DESCRIPTION" (zoradené náhodne) + nemá ani "YEAR" ANI "DESCRIPTION" (zoradené náhodne) čiže výsledok by mal byť nejak takto: 7, meno albumu 7, 1988, toto je skvelý album 1, meno alnumu 1, 2012, nestojí za reč 4, meno albumu 4, 2015, 9, meno albumu 9, 2014, 2, meno albumu 2, , odporúčam 5, meno albumu 5, , 3, meno albumu 3, , 6, meno albumu 6, , Zvolil som preto spojenie cez UNION: SELECT * FROM ( ( SELECT id,name,year,description FROM albums WHERE year != '' AND description != '' ORDER BY RAND() ) UNION ( SELECT id,name,year,description FROM albums WHERE (year = '' AND description != '') OR (year != '' AND description = '') ORDER BY RAND() ) UNION ( SELECT id,name,year,description FROM albums WHERE year = '' AND description = '' ORDER BY RAND() ) ) Na prvý pohľad sa zdá, že je všetko v poriadku, ale takýto SELECT akoby ignoroval zoradenie jednotlivých SELECTov náhodne. Ale v prípade, ak pridám LIMITY, napr. ORDER BY RAND() LIMIT 10, tak sa RAND() zoradenie prejavý. Vedel by mi prosím niekto pomôcť, prípadne ma spŕavne nasmerovať? Vďaka. |
||
Kajman Profil |
Zkuste místo unionů
ORDER BY (year = '') + (description = ''), RAND() |
||
Kamil Papica Profil * |
#3 · Zasláno: 20. 11. 2015, 10:37:04
To je presne ono, na toto by som neprišiel.
Vďaka, doštudujem si možnosti zoraďovania, nevedel som, ze sa to dá aj takýmto spôsobom použiť. :-) |
||
Časová prodleva: 9 let
|
0