Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL: Hakutulosten järjestäminen

Macro [11.04.2011 20:04:57]

#

Terve

Mulla on ihan toimiva systeemi hakutulosten järjestämiseen, mutta jos jostain rivistä puuttuu juuri se sarake jonka mukaan järjestetään, niin se pomppaa ensimmäiseksi.

SELECT * FROM elokuva.ohjelmat ORDER BY vuosi ASC LIMIT 0, 30

Tämä on esimerkki kyselystä, jolla haetaa 30 ensimmäistä hakutulosta järjestettynä vuosi-sarakkeen mukaan. Jos vuosi-sarake on 0 tai tyhjä, se on ensimmäisenä. Tässä tapauksessa kuitenkin haluaisin sen viimeiseksi. Miten se onnistuu?

Grez [11.04.2011 20:17:19]

#

laita "ORDER BY vuosi" tilalle vaikka "ORDER BY coalesce(vuosi,9999)", niin se vuodeton tulee viimeiseksi, mikäli on tyhjä. Jos vuosi on 0, niin tietenkin vuosi nolla tulee ensimmäiseksi, koska se on noin 2000 vuotta ennen vuotta 2011.

Kukaanhan ei laita tietokantaan vuodeksi nollaa, ellei sitten oikeasti ole kyseessä esim. Jeesuksen henkilötiedot.

Coalesce siis palauttaa ensimmäisen ei-tyhjän (eli null) parametrin arvon. En tiedä toimiiko coalesce kaikilla kannoilla, mutta toisaalta jos olisit halunnut jollain tietyllä kannalla toimivan vastauksen, olisit varmasti kertonut mitä kantaa käytät.

Macro [11.04.2011 21:20:14]

#

Niimpä, onhan se vuosi 0 ennen vuotta 2011. Muutin yksinkertaisella kaikki nollat nulleiksi.

coalesce toimi hyvin null-arvoilla, kiitos. MySQL oli tässä kyseessä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta