Avatar billede MPVM Nybegynder
15. juli 2009 - 12:37 Der er 3 kommentarer

MySQL forespørgsel - Sorter efter udregnet værdier

Hej alle derude!

Jeg er igang med at lave en side med spil. Jeg har en tabel i databasen over spillene og en tabel over ratings.

Jeg vil gerne sortere efter denne rating, altså ved at udregne den gennemsnitlige rating for hvert spil. Det svære ved dette er at bedømningerne af spillene skal trækkes ud af en anden tabel og derefter skal MySQL sortere hvilke bedømninger der hører til hvilke spil, det totale antal bedømnings-point og hvor mange der har stemt.

Mine tabeller ser såledet ud:


Table Ratings:
+----------+------------+-----------+
| rid..........| ip............| rating.....|
+----------+------------+-----------+

rid = Hvilket spil der rates
ip = Hvilken ip adresse der haer rated
rating = Hvad der er rated (1-5)


Table Games:
+------------+-----------+
| id.............| link.........|
+------------+-----------+

id = spillets id
link = linket til spillet



Jeg er sikker på at der skal bruges funtionerne GROUP BY til at samle alle ratings for hvert spil, COUNT() til at tælle hvor mange gange der er blevet rated, LEFT JOIN til at stykke de to tabeller sammen til en og SUM() til at regne summen af bedømningerne for hvert spil ud.

Hvis der er nogen der vil være venlig at stykke en kode sammen der kan sortere spillene efter deres bedømninger vil jeg være meget taknemmelig :D
Avatar billede alphabits Nybegynder
15. juli 2009 - 13:08 #1
SELECT id, link, AVG(rating) as avg_rating FROM Games as g INNER JOIN Ratings as r ON g.id=r.rid GROUP BY id ORDER BY avg_rating DESC
Avatar billede MPVM Nybegynder
15. juli 2009 - 14:26 #2
Tusind tak.
Det virkede fint

Det enste problem er at det kun er de spil som der er blevet rated som bliver vist. Jeg vil gerne have dem der ikke er blevet rated endnu til også at blive vist. De bliver bare vist til sidst fordi at deres rating er 0.

Hvis du kunne rette det ville det være skønt.

Og igen tusind tak :)
Avatar billede arne_v Ekspert
15. juli 2009 - 15:03 #3
Proev med LEFT JOIN i.s.f. INNER JOIN.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester