Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 2.667 pregleda

Najnovija ↓

Pomoc oko selecta 19.03.2009. u 20:37 · pre 214 meseci #1
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
Re: Pomoc oko selecta 19.03.2009. u 20:54 · pre 214 meseci #2
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.
Re: Pomoc oko selecta 19.03.2009. u 23:02 · pre 214 meseci #3
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


Re: Pomoc oko selecta 19.03.2009. u 23:12 · pre 214 meseci #4

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);


Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pomoc oko selecta 20.03.2009. u 00:12 · pre 214 meseci #5
Ima tabela i id polje :), nego sam to samo uzeo kao primer. Thx za odgovore stvarno ste mi pomogli.
Pozz
Re: Pomoc oko selecta 20.03.2009. u 00:51 · pre 214 meseci #6
@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.





Re: Pomoc oko selecta 20.03.2009. u 08:29 · pre 214 meseci #7
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;

Re: Pomoc oko selecta 20.03.2009. u 08:40 · pre 214 meseci #8
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.
Re: Pomoc oko selecta 20.03.2009. u 12:46 · pre 214 meseci #9
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 ...
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Pomoc oko selecta 20.03.2009. u 13:25 · pre 214 meseci #10
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme