Autor | Zpráva | ||
---|---|---|---|
MaK Profil |
#1 · Zasláno: 19. 6. 2013, 11:54:21
Mám tabulku
CREATE TABLE tab ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, x INTEGER UNSIGNED NOT NULL ) kde sloupec x nabyvá (poměrně náhodně) hodnot 1-4 Snažím se sestavit dotaz, který by měl tento vysledek: id, 1 id, 2 id, 3 id, 4 id, 1 id, 2 id, 3 id, 4 id, 1 id, 2 id, 3 id, 4 ... vzhledem k tomu, ze některá X jsou zastoupena častěji, je jasné, že se to po čase "rozjede" asi tak nějak: id, 1 id, 2 id, 3 id, 3 nebo id, 1 id, 2 id, 3 id, 1 id, 2 id, 3 ale to akceptuji. Napadá mě dotaz: 4 selekty (s číslovanými řádky) spojené UNIONem, ale raději bych něco elegantnějšího. Nemá někdo lepší myšlenku? MaK |
||
peta Profil |
seradit podle x
ORDER BY x ASC? pripadne podle id a x ORDER BY id ASC, x ASC? |
||
MaK Profil |
#3 · Zasláno: 19. 6. 2013, 12:43:02 · Upravil/a: MaK
peta:
ORDER BY id ASC, x ASC Nemýlím-li se, tak při unikátním id, se druhý parametr ORDER BY neuplatní. Zatím mám toto: SET @x1:=1, @x2:=2, @x3:=3, @x4:=4; SELECT id, x, CASE x WHEN 1 THEN @x1:=@x+4 WHEN 2 THEN @x2:=@x+4 WHEN 3 THEN @x3:=@x3+4 ELSE @x4:=@x4+4 END AS i FROM tab ORDER BY i ASC MaK |
||
Kajman Profil |
#4 · Zasláno: 19. 6. 2013, 14:01:10
V tomto pořadí bych to vypisoval až v aplikaci, např. s pomocí php pole.
|
||
Časová prodleva: 11 let
|
0