Mulla on henkilötietokannassa sarakkeet etunimi ja sukunimi ja laitan ne normaalisti aakkosjärjestykseen näin: ... ORDER BY sukunimi, etunimi.
Kuitenkin kannassa on joitain henkilöitä, joilla ei ole sukunimeä, vaan pelkkä etunimi. Nämä tulevat tietysti tuossa haussa aivan ensimmäiseksi. Haluaisin kuitenkin, että ne tulisivat etunimensä mukaisesti siihen kohtaan, missä muut ovat sukunimen mukaan eli tähän tapaan:
1. Pertti Nieminen
2. Niilo
3. Aki Nikkinen
Yksi ratkaisu olisi tietysti laittaa sukunimettömien etunimi sukunimi-kenttään, mutta se olisi periaatteessa hölmöä, koska kyseessä ei ole sukunimi! :)
Osaako joku neuvoa, vai meneekö turhan vaikeaksi? Kanta on Mysql.
Kuitenkin kannassa on joitain henkilöitä, joilla ei ole sukunimeä, vaan pelkkä etunimi. Nämä tulevat tietysti tuossa haussa aivan ensimmäiseksi. Haluaisin kuitenkin, että ne tulisivat etunimensä mukaisesti siihen kohtaan, missä muut ovat sukunimen mukaan eli tähän tapaan:
1. Pertti Nieminen
2. Niilo
3. Aki Nikkinen
Yksi ratkaisu olisi tietysti laittaa sukunimettömien etunimi sukunimi-kenttään, mutta se olisi periaatteessa hölmöä, koska kyseessä ei ole sukunimi! :)
Osaako joku neuvoa, vai meneekö turhan vaikeaksi? Kanta on Mysql.
Vastaukset 3
Vanhimmat
Sovelletaan tota sinun ratkaisua, ja tehdään kyselyssä moinen operaatio.
SELECT etunimi, CASE
WHEN sukunimi IS NULL
THEN etunimi
ELSE sukunimi
END AS sukunimi
FROM nimet
ORDER BY sukunimi, etunimi
Myslissä toimii myöskin allaoleva, joka on käyttötarkoituksesta riippuen parempa. Vaikka ei olekkaan SQL standartin mukainen.
SELECT etunimi, sukunimi
FROM nimet
ORDER BY CASE
WHEN sukunimi IS NULL
THEN etunimi
ELSE sukunimi
END, etunimi
Toi muuten toimi tuo jälkimmäinen vaihtoehto =) Tosin piti IS NULL tilalle laittaa = ""
kun ei aluksi tuntunut toimivan oikein, mistä sitten johtuukin.. =/
siitä, että sinulla on tyhjä eikä null arvo kannassa