MySQL - Group in Count 2 tabeli
 
Lucifix 12. feb 2012 15:18:13 Pridružen od:
14. okt 2008
744 objav
438 12 0
#1

Kdo mi lahko prosim pomaga...



Imam dve tabeli, ki imata skupno vrstico slikaid:

Tabela: ocene (rows: slika
id, ocena)

Tabela: komentarji (rows: slika_id, ocena)



Kako bi lahko združil te dve tabeli za eno sliko (recimo slika_id = 1651), da bi ven dobil vse dane ocene od 1 - 5 za to sliko in kjer poleg bi pisalo število prejetih ocen (count).



Primer rezultata:

1 (ocena) - 0 (št. glasov) - ta se seveda ne izpiše, ker nobeden ni dal ocene 1

2 (ocena) - 12 (št. glasov)

3 (ocena) - 5 (št. glasov)

4 (ocena) - 4 (št. glasov)

5 (ocena) - 0 (št. glasov) - ta se seveda ne izpiše, ker nobeden ni dal ocene 5


všeč(0) ni všeč(0) spam(0)
 
Gogy 12. feb 2012 15:20:25 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#2
select oc.ocena, count(*)
from ocene oc, komentarji ko
where oc.slika_id=ko.slika_id
and oc.slika_id=1651
group by oc.ocena
order by oc.ocena asc

probaj, to sem napisal na pamet na hitro



Pa verjetno je tukaj namesto

Tabela: ocene (rows: slikaid, ocena)

Tabela: komentarji (rows: slika
id, ocena)



takole

Tabela: ocene (rows: slikaid, ocena)

Tabela: komentarji (rows: slika
id, komentar)


všeč(1) ni všeč(0) spam(0)
 
Lucifix 12. feb 2012 15:23:34 Pridružen od:
14. okt 2008
744 objav
438 12 0
#3

Žal ne pride točno. Mogoče sem jaz zgoraj malo zaf... ko sem napisal tole:

Tabela: ocene (rows: slikaid, ocena)

Tabela: komentarji (rows: slika
id, ocena)



Moralo bi biti:

Tabela: ocene (rows: slikaid, ocena)

Tabela: komentarji (rows: slika
id, ratings, komentar)



Sicer ne vem ali bo to kaj spremenilo tvoj sql stavek.



Thx za pomoč ;)


všeč(0) ni všeč(0) spam(0)
 
Tody 12. feb 2012 15:24:06 Pridružen od:
3. maj 2010
1446 objav
1411 299 25
#4

Pomoje bi to moralo delovati, čeprav bi jaz zaradi volje sintakse raje dal count(ocena) :)



Hja glede na tvoj zadnji komentar se moreš odločit kje so ocene :) V ocena ali v ratings, glede na to moreš seveda tudi preštet zadeve glede na to:)



Če je število ocen v ocena potem šteješ ocena ampak prikazuješ pa ratings



select ratings,count(ocena)

from ocene oc, komentarji ko

where oc.slikaid=ko.slikaid

and oc.slika_id=1651

group by ratings

order by ratingsasc


všeč(0) ni všeč(0) spam(0)
![](http://www.internetmojster.com/splosno/dobrodelna-akcija.html)
 
Lucifix 12. feb 2012 15:26:08 Pridružen od:
14. okt 2008
744 objav
438 12 0
#5

Žal ne Tody, za to fotografijo mi pride rezultat: 363 namesto 44



http://www.slo-foto.net/galerija_slika-94469.html&filter=high



EDIT na tvoj zadnji odgovor:

Ocene se po starem sistemu nahajajo v tabeli komentarji (ratings), v novem sistemu pa v tabeli ocene (row ocena). Jaz pa bi jih želel združiti skupaj.


všeč(0) ni všeč(0) spam(0)
 
Gogy 12. feb 2012 15:35:04 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#6

A so tukaj komentarji potem sploh pomembni?



TI želiš ocene, koliko jih je in koliko je katerih?


select ocena, count(*)
from ocene
where slika_id=1651
group by ocena
order by ocena asc
všeč(0) ni všeč(0) spam(0)
 
Lucifix 12. feb 2012 15:37:37 Pridružen od:
14. okt 2008
744 objav
438 12 0
#7

Komentarji niso pomembni, zaradi tega jih tudi nisem omenil v prvem postu. Ampak vsebujejo pa po starem sistemu ocene.



Jaz želim, zaradi spremembe sistema, združiti ocene iz ene tabele z drugo tabelo in prikazati koliko jih je ter katere so.


všeč(0) ni všeč(0) spam(0)
 
Gogy 12. feb 2012 21:22:38 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#8

Če ne dobiš nobenega konkretnega odgovora bi jaz to rešil kar s PHP-jem (če delaš z njim) in pač narediš kak query več in s pomočjo kakih array-ev narediš merge.



Ni profi, bi bilo pa za silo.


všeč(0) ni všeč(0) spam(0)
 
SimonZa 12. feb 2012 21:37:54 Pridružen od:
27. sep 2011
16 objav
9 1 0
#9

SELECT ocena, count(ocena)

FROM

(

SELECT ocena FROM ocene WHERE slikaid = 1651

UNION ALL

SELECT ocena FROM komentarji WHERE slika
id = 1651

) tablica

GROUP BY ocena

ORDER BY ocena



Opcija z enim SQL-om. Osebno bi raje uporabil Gogyjevo rešitev (2 poizvedbi + merge)


všeč(4) ni všeč(0) spam(0)
 
Gogy 12. feb 2012 22:07:50 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#10

Hehehe, sem vedel da je simple rešitev, pa sem izumljal toplo vodo :)



Jaz bi kar tole uporabil, samo da bi pri drugem select uporabil ratings namesto ocena :)


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se