Minulla on tietokannassa taulu pisteet johon tallennetaan kuukausittain erään tietovisan tulokset. Nyt pitäisi saada kaikkien kuukausien top10-lista. Kysymykseni onkin siis onko mahdollista laskea tämä summa jo SQL kyselyssä? Eli siis kaikkien kuukausien yhteistulokset tietyn nimen kohdalla.
Taulussa on kentät nick,pts, kk ja vuosi. Tällä hetkellä haen yhteistuloksen seuraavanlaisella php-koodilla:
$query="SELECT DISTINCT nick FROM pisteet ORDER BY nick"; $result=mysql_query($query); $num = mysql_num_rows ($result); $i=0; while ($i < $num) { $nick=mysql_result($result,$i,"nick"); echo "$nick"; $query2="SELECT pts FROM pisteet WHERE nick = '$nick'"; $result2=mysql_query($query2); $num2 = mysql_num_rows ($result2); $x=0; $sum = 0; while ($x < $num2) { $pts=mysql_result($result2,$x,"pts"); $sum = $sum + $pts; $x++; } echo " $sum<br>"; $i++; }
Mutta tämän koodin avulla ei voi käyttää SQL-kyselyssä ORDER BY määrettä. Voiko pisteet siis laskea suoraan kyselyssä, vai tarvitseeko minun rakentaa php-skripti joka pyörittelee pisteet järjestykseen?
No tuon yhteistuloksen saa todellakin paljon helpommin.
Päästäheitettyä koodia:
SELECT nick, SUM(pts) AS pts FROM pisteet GROUP BY nick ORDER BY pts DESC
Paljon järkevämpi tietokantaratkaisu olisi pistää tuo nick omaan tauluun. Silloin kyselymahdollisuudet olisivat jo toista luokkaa.
Joo ei taas aamulla leikannut. Löysin tuossa tuon samaisen SUM :in selaillessa MySQL manuskaa. Kiitoksia avusta kuitenkin.
Tuo kannan rakenne on paha enää lähteä muuttamaan kun siellä on jo 5kk tulokset.
Aihe on jo aika vanha, joten et voi enää vastata siihen.