[ bloker @ 15.03.2010. 08:01 ] @
Treba da sortiram korisnike po kućnom broju..
Ali problem mi se javlja kod zgrada gdje kućni broj izgleda nekako ovako 20-1, 20-2, ... 20-10, ... 20-20, 20-21...
I select mi vrati nešto ovako 20-1, 20-10, 20-11, .... 20-2, 20-20, 20-21..
E sada mi treba pomoć kako da ovo sortiram da mi ide 20-1, 20-2 ... 20-10, ...
Jedno rješenje mi je da prepravim da bude 20-01 ali to mi baš i ne odgovara..
[ Man-Wolf @ 15.03.2010. 08:44 ] @
Hmm, nisam siguran, ali mozda bi bilo ok ako bi izbacio '-', tako da bi dobio brojeve:

Citat:


20-1 <==> 201
20-2 <==> 202
20-10<==> 2010
...



Probaj ovako nesto:

Code:


SELECT * FROM gdeGod
ORDER BY REPLACE(broj_zgrade, '-', '')

[ bloker @ 15.03.2010. 09:09 ] @
Ovo mi baš i ne odgovara.. U jednoj ulici imam brojeve npr. od 1-300 i imam zgradu na broju 20 koja ima onakvu numeraciju.. tako da replace ne bih mogao raditi.. jer bi tek onda razbacao..
[ Nikola Poša @ 15.03.2010. 13:36 ] @
A možda ovako nešto:
Code:
SELECT ulica, IF(LOCATE('-', broj) != 0, SUBSTR(broj, 1, LOCATE('-', broj)-1), broj) AS 'br', IF(LOCATE('-', broj) != 0, SUBSTR(broj, LOCATE('-', broj)+1), 0) AS 'podbr'
FROM adrese
ORDER BY ulica, br, podbr
[ bogdan.kecman @ 15.03.2010. 22:00 ] @
string se sortira kao string i 6 ce uvek biti vece od 1000 u tom slucaju ... te su ti resenja vrlo ogranicena

1. ako sortiras kao string moras da 10-1 napises ili kao 10- 1 ili 1-01 (to si reko da neces)
2. ako sortiras kao integer moras ili da razbijes broj u untegere u tabeli (brze, ali vise posla i zahteva menjanje i aplikacije i baze) ili da ga razbijes u integere funkcijom (sporije, napisao ti je nikola kako)
3. da sortiras na klijentu - isto "ok varijanta" ... generalno zavisno sta je klijent ali vrlo cesto mozes ceo smor sortiranja da prebacis skroz na klijent (css/java script u web okruzenju, ili nesto drugo za desktop) ako ti nije bitno da uzmes "prvih 10 sortiranih po ..." a obzirom da pricamo o brojevima zgrada ... to mozes laganica da prebacis na klijent posto ces tu vaditi uvek "sve koji odgovaraju zahtevu" ... sve i da su ti klijent i server na istoj masini, ne verujem da ces napisati bas toliko spor sort da ce to da znaci nesto .. (mysql ce svejedno to sortirati obicnim merge sort-om)