Autor Zpráva
Martin__
Profil *
Ahoj, mám menší problém s řazením dat.
Jesliže položím dotaz
SELECT * FROM `tabulka` WHERE id = '2' || id = '1'
,
vrátí se mi dva řádky. Jsou však seřazené podle id. Takže nejdříve s id rovným jedné a pak dvoum. Proč se to takto samo seřadí? Dělá to u i textových buňěk. Potřeboval bych získat data v tom pořadí, jak jsem se na ně ptal, tedy nejprve druhý (id=2) řádek a pak první (id=1). Dotazy se generují za pochodu a může nastat situace, kdy bude dotaz vypadat takto
SELECT * FROM `tabulka` WHERE id = '1' || id = '2'
, proto nemohu použít něco jako "order by id desc nebo acs". Jak zabráni automatickému řazení? Dík
Taps
Profil
Martin__
Zkus:
SELECT * FROM `tabulka` WHERE id = '2' || id = '1' order by id DESC
Martin__
Profil *
Taps
To nemohu z důvodu uvedených výše.
svadla
Profil *
Taps
no tak podle te tve situace budes menit DESC a ASC v order by ...
Alphard
Profil
pořadí nezměníš pomocí where, to je pouze filtr, databázi vlastně říkáš, že chceš vrátit záznam, kde id je 1 nebo 2, ne nutně v tomto pořadí
jestli není možné použít order by, tak pomůže více dotazů na databázi a výběr po jednom
Kajman_
Profil *
SELECT * FROM `tabulka` WHERE id = '2'
union all
SELECT * FROM `tabulka` WHERE id = '1'
Martin__
Profil *
Kajman_
Díky, nakonec jsem to tak vyřešil. Ale zajímalo by mě, jak by se to udělalo, jestliže by nebyl příkaz UNION k dispozici.
nightfish
Profil
jak by se to udělalo, jestliže by nebyl příkaz UNION k dispozici.
už to tu padlo - vybíralo by se po jednom - jeden dotaz do databáze, jeden řádek výsledku
otázkou je, zda-li by tvůj problém nešel řešit nějak elegantněji a řazení na základě "pořadí v podmínce WHERE" úplně vynechat
MzM
Profil
pořadí, takto požadované, je něco, co není až tak běžné. Pokud chci speciální pořadí, které se nedá dostat přes std order podle nějakého sloupečku, tak se, většinou přidává sloupeček, který bude obsahovat něco, podle čeho se to bude dát seřadit v požadovahém pořadí (děsná formulace).
25k_bezPC_Grr
Profil *
SELECT * FROM `tabulka` WHERE id = '2' || id = '1'
ORDER BY FIELD(id, 2,1) DESC

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