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

Pomoc oko selecta

[es] :: MySQL :: Pomoc oko selecta

[ Pregleda: 1695 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anaxim
Srbija

Član broj: 204660
Poruke: 83
62.68.121.*



Profil

icon Pomoc oko selecta19.03.2009. u 19:37 - pre 164 meseci
U tabeli postoji jedna kolona (npr. kolona_1) koja moze imati dve vrednosti (npr. 1 i 2). Da li je moguce jednim upitom prebrojati u koliko redova kolona_1 ima vrednost 1 a u koliko vrednost 2? Ako je moguce kako bi isla sintaksa tog upita?
Pozzz
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

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



+33 Profil

icon Re: Pomoc oko selecta19.03.2009. u 19:54 - pre 164 meseci
Nadam se da ta tabela ima još neko polje, npr. id, pa bi to onda moglo da se prebroji ovako:
Code:

SELECT COUNT(id)
FROM tabela
WHERE kolona_1 = 1
UNION 
SELECT COUNT(id)
FROM tabela
WHERE kolona_1 = 2

Sigurno ima neko bolje rešenje, al' meni je ovo prvo palo napamet. Tako ćeš dobiti samo dva reda u rezultatu upita, u prvom će biti broj "jedinica", u drugom broj "dvojki". U slučaju da je u toj koloni isti broj vrednosti jedinica i dvojki, upit će vratiti samo jedan red.
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: Pomoc oko selecta19.03.2009. u 22:02 - pre 164 meseci
Evo i još jednog mogućeg rešenja:

Code:

SELECT
SUM(if(kolona_1 = 1,1,0)) as jedinice,
SUM(if(kolona_1 = 2,1,0)) as dvojke
FROM tabela


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

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

Sajt: mysql.rs


+2351 Profil

icon Re: Pomoc oko selecta19.03.2009. u 22:12 - pre 164 meseci

Tudfa, izbegavaj takvo resenje ... ono radi, ali takav upit ne moze da koristi index tako da, ako je kolona_1 indexirana i ako je set od dve vrednosti nikolino resenje je iz 4 koraka a tvoje radi full table scan.

jos jedno resenje
Code:

SELECT (SELECT COUNT(*) FROM t1 WHERE kolona_1 = 1) , (SELECT COUNT(*) FROM t1 WHERE kolona_1 = 2);



 
Odgovor na temu

anaxim
Srbija

Član broj: 204660
Poruke: 83
62.68.121.*



Profil

icon Re: Pomoc oko selecta19.03.2009. u 23:12 - pre 164 meseci
Ima tabela i id polje , nego sam to samo uzeo kao primer. Thx za odgovore stvarno ste mi pomogli.
Pozz
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: Pomoc oko selecta19.03.2009. u 23:51 - pre 164 meseci
@bogdan.kecman

Hvala na hintu...

I hteo bih ovo prilikom da kazem svaka čast na postovima, stvarno daju doprinos kvalitetu MySQL foruma i nadam se da ce tako biti i ubuduće.





 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Pomoc oko selecta20.03.2009. u 07:29 - pre 164 meseci
Evo jednog riješenja možda nije toliko brzo kao ova predhodna, ali mislim da je dobro ako ima više različitih vrijednosti u koloni.

Code:


SELECT GROUP_CONCAT(broj SEPARATOR ' ') as spojeno
FROM (SELECT COUNT(*) AS broj
      FROM t1
      GROUP BY kolona_1
      ORDER BY kolona_1) AS tabela;

 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Pomoc oko selecta20.03.2009. u 07:40 - pre 164 meseci
Mada ovo i nije baš ono što si tražio jer ovaj upit vrati spojene vrijednosti u jednoj koloni, a tebi to pretpostavljam ne treba.
Pozz.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

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

Sajt: mysql.rs


+2351 Profil

icon Re: Pomoc oko selecta20.03.2009. u 11:46 - pre 164 meseci
bantu, to je cool ideja :) .... mozes da ides na group_concat('x', ' ') pa onda brojis x-ove posle .. (ili strlen / 2) ... obrati samo paznju na server varijablu za max velicinu group_concat-a posto ako ima puno slogova ...
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Pomoc oko selecta20.03.2009. u 12:25 - pre 164 meseci
Hvala, to mi je onako brzinski palo na pamet, mada, ja bi uvjek koristio:
Code:

SELECT kolona_1, COUNT(*)
FROM t1
GROUP BY kolona_1
ORDER BY kolona_1

I onada bi na brzinu "protrčao" kroz ResultSet bilo u Stored proceduri ili u nekom od programskih jezika i uradio sa tim vrijednostima šta mi već treba. Ionako mi ti podaci trebaju za neku daljnu obradu bilo u mysql-u ili nečemu trećem.
 
Odgovor na temu

[es] :: MySQL :: Pomoc oko selecta

[ Pregleda: 1695 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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