řazení dle dvou sloupců rubrika: Databáze: SQL
Zdá se to triviální a možná také bude, ale já si s tím neví rady...
Mám 2x timestamp, caszalozeni, caszmeny
potřebuju projít posledních 5000 změn v databázi např - tedy jedním dotazem vybrat 5000 posledních timestampu z těcht odvou sloupců
order by caszalozeni, caszmeny mi tohle neřeší...
Věřím, že pro mnohé z Vás toto bude snadné :)
Díky za ponaučení a předem prosím, že nápady typu "ukládej si čas založení do času změny" nebere :)))
V ORDER BY
by mel jit pouzit CASE
nebo GREATEST
(podle DB enginu)
ORDER BY CASE WHEN caszalozeni > caszmeny THEN caszalozeni ELSE caszmeny END DESC
Nebo pokud to tvoje DB podporuje:
ORDER BY GREATEST(caszalozeni, caszmeny) DESC
Jinak to ale vypada, ze by mohl stacit COALESCE
. Pokud je to tak, ze caszalozeni
je vyplneny vzdy a caszmeny
je bud NULL
nebo vyssi nez caszalozeni
, staci neco jako tohle.
ORDER BY COALESCE(caszmeny, caszalozeni) DESC
Pokud caszmeny
chybi, pouzije se caszalozeni
. Jinak se pocita, ze caszmeny
proste bude vyssi.
Je to trochu komplikovanejsi, pokud ten posledni predpoklad neplati, ale aspon jedna z tech hodnot muze byt NULL
. Pak je potreba ty pristupy zkombinovat, protoze jednotlive nebudou stacit na pokryti vsech moznosti.
Pro zobrazení všech 5 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře