Autor | Zpráva | ||
---|---|---|---|
alibagil Profil |
#1 · Zasláno: 13. 5. 2016, 11:09:47
Potřeboval bych z tabulky vytáhnout záznamy a seřadit je podle data vložení, od nejnovějších, pokud nemají nastavenou prioritu (null), pokud ano, záznamy s prioritou > 0 budou vždy první. Je nějaká možnost, jak to udělat přímo v mysql dotazu?
příklad řazení: id datum priorita 1 11.5.2016 1 2 12.5.2016 2 3 13.5.2016 null 4 12.5.2016 null |
||
juriad Profil |
#2 · Zasláno: 13. 5. 2016, 11:27:33
select * from udalosti order by priorita > 0 DESC, datum DESC priorita > 0 je true/false/null, to se převede na číslo 1/0/null, které se seřadí sestupně.
sqlfiddle.com/#!9/21cb8c/1 |
||
TomášK Profil |
#3 · Zasláno: 13. 5. 2016, 11:29:56
ORDER by priorita IS NULL DESC, priorita, datum DESC . Možná mám prohozené ASC/DESC, to už si předpokládám doladíš.
|
||
alibagil Profil |
Díky za reakci. Bohužel toto nefunguje, resp. ne úplně. Sice to správně zařadí záznamy s prioritou > 0 na první místa, ale zde jsou již dále řazeny podle data vložení, výsledek teď vypadá takto:
id datum priorita 1 12.5.2016 2 2 11.5.2016 1 3 13.5.2016 null 4 12.5.2016 null Potřebuji, aby byly první dva záznamy opačně, tedy podle priority 1,2 atd. TomášK: Díky moc, to je přesně ono! |
||
alibagil Profil |
#5 · Zasláno: 13. 5. 2016, 14:12:25
Tak přece jen ještě jedna věc. Bylo by možné, aby to pracovalo s hodnotou 0 a ne jen s null? Jde mi o to, že pokud prioritu změním např. z 2 na 0, tak se položka zařadí na první místo. Chtěl bych, aby se přepisem na 0 priorita jakoby vymazala a položka se řadila opět pouze podle data vložení.
|
||
juriad Profil |
#6 · Zasláno: 13. 5. 2016, 14:20:43
ORDER BY (priorita IS NULL OR priorita = 0) ASC, priorita ASC, datum DESC Proč vůbec umožňuješ prioritu, která je NULL? Je snad problém vyplnit jako výchozí hodnotu 0? Navíc by sedělo, že vyšší priorita = víc nahoře. Pak by dokonce stačilo: ORDER BY priorita DESC, datum DESC |
||
alibagil Profil |
#7 · Zasláno: 13. 5. 2016, 14:36:03
juriad:
Díky, díky, teď je to perfektní. Ona to vlastně není priorita, ale pořadí, stejný princip, jen opačný, čím nižší číslo (kromě nuly) tím výše v pořadí. |
||
Časová prodleva: 9 let
|
0