Mysql-haussa
<?php $kysely = mysql_query("select vuosi, nro from lehtitaulu where lehti = 'spiderman' order by vuosi, nro"); while ($Lehtihaku = mysql_fetch_row($kysely)) { print $Lehtihaku[0] . ":" . $Lehtihaku[1]. "<p>"; } ?>
tulee pieni kauneusvirhe. Eli, kysely osaa lajitella muuten oikein vuoden ja numeron mukaan, mutta jos nro-kentässä on kaksi numeroa tulostuu esim. 13:sta ennen 2:sta. Olisikohan jollakin tähän jotain parempaa ratkaisua?
Onhan nro
-kenttä numeerinen? Tuollainen järjestys viittaa yleensä siihen, että kyseessä on merkkijonokenttä.
Kiitos vinkistä. Siinähän se lajittelujärjestys johtuikin. Nro-kenttä on muotoa VARCHAR. Vaihtamalla sen vaikkapa Integeriksi (Int) numeroiden lajittelu toimii oikein. Sitten tulee vain sellainen ongelma, että numerokenttään tarvitsee syöttää myös ei-numeerisia merkkejä esim. 12-13, joita ei voi numeeriseen kenttään tallettaa.
Ihan vaan tiedoksi, mikäli jollekin tulee vastaava ongelma eteen kenttien muodon suhteen; lajittelu toimii oikein laittamalla nro-kenttä VARCHAR-muotoon ja merkitsemällä yksinumeroiset luvut 01, 02, jne.
Tapani kirjoitti:
Ihan vaan tiedoksi, mikäli jollekin tulee vastaava ongelma eteen kenttien muodon suhteen; lajittelu toimii oikein laittamalla nro-kenttä VARCHAR-muotoon ja merkitsemällä yksinumeroiset luvut 01, 02, jne.
Väittäisin, että VARCHARia ei kannatta käyttää numerokenttiin.
Haussa voi vaihtaa kentän tyyppiä CAST funktiolla:
Aihe on jo aika vanha, joten et voi enää vastata siihen.