Cytat
Nazwa tabeli games Pola jakie mam w bazie game_id, user_id, rate
oczywiście że mam.
Tylko NIE zawiera ona ŚREDNIEJ tylko ocenę
np gra o id 5
ma ocenie 3 i 5
(po prostu dwa wpisy)
średnia (3+5)/2=4
Napisałem takie coś
$id = $rekord[0];
$srednia=mysql_query ("SELECT count(*) as numberrate,SUM(rate) as sumrate FROM games_rate WHERE game_id=$id "); $sredniawka= round($rekord2[1
]/$rekord2[0
] ,2
);
$i++;
$nr[$i] = $id;
$avg[$i] = $sredniawka;
}
}
for ($e=1; $e<20; $e++)
{$razem[$e] = "srednia $avg[$e] gra $nr[$e]<br>";}
for ($c=0; $c<20; $c++)
Wyjaśniam.
Tworzę tabele nr i avg (zawierającą numer gry pobrany z bazy i wyliczoną średnią)
Następnie łączę te tabele razem ze sobą i sortuje.
Możliwe że jest łatwiejszy sposób, jeśli tak to proszę o podpowiedź.Napisałem pętle dla c,e <20 ponieważ mam tyle pozycji, w przyszłości ulepszę to by zliczał liczbę pozycji z bazy
Dodaję bazę, jeśli ktoś ma chęci bo rozwiązać to w inny sposób
CREATE TABLE games_rate (
game_id int(11) NOT NULL DEFAULT '0',
user_id int(11) NOT NULL DEFAULT '0',
rate int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (game_id,user_id)
) ;
INSERT INTO games_rate VALUES (280, 2, 3);
INSERT INTO games_rate VALUES (17, 457, 4);
INSERT INTO games_rate VALUES (280, 457, 2);
INSERT INTO games_rate VALUES (280, 568, 0);
INSERT INTO games_rate VALUES (280, 1720, 0);
INSERT INTO games_rate VALUES (280, 1813, 0);
INSERT INTO games_rate VALUES (280, 1873, 5);
INSERT INTO games_rate VALUES (280, 1918, 5);
INSERT INTO games_rate VALUES (280, 1931, 3);
INSERT INTO games_rate VALUES (734, 2, 3);
INSERT INTO games_rate VALUES (735, 457, 1);
INSERT INTO games_rate VALUES (735, 2, 5);
INSERT INTO games_rate VALUES (280, 1965, 3);
INSERT INTO games_rate VALUES (735, 1968, 5);
INSERT INTO games_rate VALUES (744, 457, 5);
INSERT INTO games_rate VALUES (746, 457, 5);
INSERT INTO games_rate VALUES (743, 457, 4);
INSERT INTO games_rate VALUES (747, 2, 4);
INSERT INTO games_rate VALUES (745, 547, 4);
Chyba najlepszym rozwiązaniem będze dodanie pola do bazy zawierającego średnią ocenę