Autor Zpráva
MaK
Profil
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
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
V tomto pořadí bych to vypisoval až v aplikaci, např. s pomocí php pole.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0