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

Problem sa count i where

[es] :: MySQL :: Problem sa count i where

[ Pregleda: 1658 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
62.68.111.*



+1 Profil

icon Problem sa count i where27.06.2009. u 21:44 - pre 180 meseci
tabela: tagovi

idtag
idrecept
nazivtag

i sad npr imam

+idrecept+nazivtag

5 cevapi
6 cevapi
5 pizza

Da mi je da izvucem sve tagove za idrecept = 5; al da imam jedno polje koje ce mi reci koliko je tag s tim nazivom biti koristen. Probao sam

SELECT t.*, COUNT(*) AS num FROM ottag t WHERE idrecept='5' GROUP BY nazivtag

al on prebroji dobro, al COUNT gleda na osnovu ovog WHERE idrecept='5', a htio bih da zanemari taj WHERE kod brojanja. Sad kad otvorim prikaz, gdje su tagovi da prikazuje

cevapi (2), pizza (1)

u zagradi koliko je ukupno puta koristeno, ja mogu doci koliko je puta koristeno za taj recept, al hocu opcenito.

Thanks
Poz
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa count i where27.06.2009. u 23:19 - pre 180 meseci
Citat:

Da mi je da izvucem sve tagove za idrecept = 5; al da imam jedno polje koje ce mi reci koliko je tag s tim nazivom biti koristen. Probao sam

SELECT t.*, COUNT(*) AS num FROM ottag t WHERE idrecept='5' GROUP BY nazivtag


ako ja tebe nesto razumem ?

sta ovaj upit predstavlja ?!?!?

posto imas group by nazivtag, kakve su ti ocekivane vrednosti t.* ??? ako imas vise vrednosti za t.* za isti nazivtag koju vrednost ocekujes da dobijes? prvu? najvecu? poslednju? neku? ...

Citat:

al on prebroji dobro, al COUNT gleda na osnovu ovog WHERE idrecept='5', a htio bih da zanemari taj WHERE kod brojanja. Sad kad otvorim prikaz, gdje su tagovi da prikazuje

cevapi (2), pizza (1)



count() je agregaciona funkcija koja gleda ono po cemu radis group by - u ovom slucaju nazivtag
group by grupise rezultate prethodnog dela upita, dakle where idrecept='5' (zasto je 5 pod navodnicima ?!?!? zasto poredis integer i string ?!?!?)

ne mozes da kazes upitu da neke uslove gleda za nesto a neke druge za nesto drugo ... ne ide to tako ... ceo upit je is starta pogresan (vrednost koju dobijas za t.* je kompletno beskorisna / nekonzistentna)

procitaj, ali detaljno:
http://dev.mysql.com/doc/refman/5.1/en/select.html
http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html

to sto tebi verovatno treba moze da se izvuce self join-om ali kako si postavio pitanje...
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
62.68.111.*



+1 Profil

icon Re: Problem sa count i where28.06.2009. u 11:24 - pre 180 meseci
Da, nisam dobro objasnio. Sad ću napisat šta kako mi izgleda tabela, sa vrijednostima, i šta bih želio da dobijem.

ottag:

idtag
idrecept
nazivtag

npr

1 5 pizza
2 5 ketchup
3 5 fungi
4 5 cheese
5 6 pizza
5 6 fungi

Tagovi za idrecept 5 su:

pizza, ketchup, fungi, cheese

a za idrecept 6

pizza, fungi.

Možemo vidjeti da su u cijeloj tabeli pizza i fungi dva puta upisani(na dva različita recepta). Ja sad želim prikaz tagova za id recept u ovakom obliku:

idtag
idrecept
nazivtag
putakoristen


Tako da mi za idrecept 5 bude:

pizza (2), ketchup (1), fungi (2), cheese (1)

za id recept 6

pizza (2), fungi (2),

i npr soriram po broju koliko je puta koristen. Ja mogu da dobijem koliko je puta koristen u nekom receptu, ali ne mogu to koliko je puta koristen opcenito da dobijem.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Problem sa count i where28.06.2009. u 11:30 - pre 180 meseci
Pa što ne izbaciš taj WHERE kompletno?

Aha, kontam, hoćeš samo sastojke koji su u tom receptu, ali da vidiš u koliko se još recepata pojavljuju? Pa što nisi tako napisao? ;)
Code:

select t1.nazivtag, count(*)
from ottag t1
inner join ottag t2 on t1.nazivtag = t2.nazivtag
where t1.idrecept = 5
group by t1.nazivtag
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
62.68.111.*



+1 Profil

icon Re: Problem sa count i where28.06.2009. u 12:11 - pre 180 meseci
Hvala. Pa rekao bih odmah, vec nisam znao kako bih se najbolje izrazio :-). Mislim da cu morati malo da detaljnije proucim ovo spajanje i sl. Presao sam nekako preko toga.. Ako se ne varam ovo inner join = self join?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa count i where28.06.2009. u 20:53 - pre 180 meseci
inner join != self join ...

self join je ovo sto ti je jablan napisao, kada spajas tabelu "samu sa sobom" .. jeli, tome "self" .. tabelu mozes samu sa sobom i left outter ako bas oces :D

da, na ona dva linka iz prethodne poruke ... pogledaj:
http://dev.mysql.com/doc/refman/5.1/en/join.html

samo pazi ... pogledaj "stvarno", nemoj da preletis sa "razumem ja ovo", uzmi lepo i probaj primere, expertimentisi malo .. ako ti je cilj da naucis sql, ako ti to nije cilj, slobodno izignorisi ovo sto pisem
 
Odgovor na temu

[es] :: MySQL :: Problem sa count i where

[ Pregleda: 1658 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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