Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brojanje podataka tipa varchar

[es] :: MySQL :: Brojanje podataka tipa varchar

[ Pregleda: 1916 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bloker
R. Srpska

Član broj: 79958
Poruke: 216
79.143.174.*



+3 Profil

icon Brojanje podataka tipa varchar13.05.2009. u 12:56 - pre 181 meseci
U bazi imam podatke koji oznacavaju broj racuna i izgledaju ovako:
Code:

816 / 1
816 / 2
817
818 / 1
...
1017 / 1
1017 / 2

E sada ovdje mi treba minimalni i maksimalni broj i koliko ih ima ukupno. S tim da se "816 / 1" i "816 / 2" broji kao jedan...
kao minimalni treba da dobijem 816, a maksimalni 1017.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Brojanje podataka tipa varchar13.05.2009. u 14:23 - pre 181 meseci
Probaj ovako:
Code:

SELECT DISTINCT CAST(IF(LOCATE(' ', broj)=0, broj, SUBSTR(broj, 1, LOCATE(' ', broj)-1)) AS UNSIGNED) AS br
FROM racuni
ORDER BY br ASC

Tako ćeš dobiti:
Code:

816
817
818
1017
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.xdsl.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Brojanje podataka tipa varchar13.05.2009. u 14:47 - pre 181 meseci
http://dev.mysql.com/doc/refma...t-functions.html#function_cast

SELECT COUNT(*) AS koliko_ukupno, MAX(CAST(kolona AS SIGNED)) AS najveci, MIN(CAST(kolona AS SIGNED)) AS najmanji FROM t1;


Ovo svaki put radi TABLE SCAN dakle ovaj upit procita SVE slogove iz tabele da bi ovo izracunao i nikakav index ti nece pomoci. Ako mozes da promenis dizajn baze - promeni posto ovo ovako ne valja.
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
*.static.isp.telekom.rs.

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: Brojanje podataka tipa varchar14.05.2009. u 07:18 - pre 181 meseci
Zašto mora da postoji polje u tabeli u kojem piše "816 / 1" tipa VARCHAR?
Bolje napravi dva polja, oba integer za posebno levi i desni deo. Ako treba možeš napraviti ta dva polja da budu primarni ključ.
"Common sense is not so common." - Voltaire
 
Odgovor na temu

bloker
R. Srpska

Član broj: 79958
Poruke: 216
79.143.174.*



+3 Profil

icon Re: Brojanje podataka tipa varchar14.05.2009. u 09:30 - pre 181 meseci
Citat:
bogdan.kecman
SELECT COUNT(*) AS koliko_ukupno, MAX(CAST(kolona AS SIGNED)) AS najveci, MIN(CAST(kolona AS SIGNED)) AS najmanji FROM t1;


ovo rjesenje radi ok kada treba da pronadje najveci i najmanji.. ali ukupno mi ne radi ok.. tj on ih prebroji sve "816 / 1", "816 / 2" broji kao 2 elementa.. a treba mi da ih broji kao jedan..
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.xdsl.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Brojanje podataka tipa varchar14.05.2009. u 11:40 - pre 181 meseci
Code:
select count(distinct(CAST(kolona AS SIGNED))) from t1


jedino neces moci sve u istom upitu nego jedan po jedan
 
Odgovor na temu

bloker
R. Srpska

Član broj: 79958
Poruke: 216
79.143.174.*



+3 Profil

icon Re: Brojanje podataka tipa varchar14.05.2009. u 11:48 - pre 181 meseci
radi sada ok.
Hvala ;)
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Brojanje podataka tipa varchar14.05.2009. u 12:10 - pre 181 meseci
samo ti se cini da radi :( ... ako imas par desetina slogova u bazi to je ok, ali za iole realne podatke taj query ce ti zabosti server :( ... to je table scan i to najgore vrste .. redizajniraj tabelu kako znas i umes ako ovakav upit izvrsavas cesce od jednom u 2 godine !!
 
Odgovor na temu

[es] :: MySQL :: Brojanje podataka tipa varchar

[ Pregleda: 1916 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.