while loop e join output in mysql php

Ho un codice che scorre attraverso il database e invia tutto a una pagina php.

$avg = mysql_query("SELECT subject, gradeone, gradetwo, gradethree, ((gradeone + gradetwo + gradethree) / 3) as average FROM grades"); $q = mysql_query("SELECT * FROM newstudent AS n JOIN grades AS g ON n.id = g.id ORDER BY n.id") or die (mysql_error()); $last_student = null; while ($row = mysql_fetch_assoc($q)) { if ($row['id'] !== $last_student) { $last_student = $row['id']; echo "Student ID: ".$row['id']."
"; echo "First Name: ".$row['firstname']."
"; echo "Last Name: ".$row['lastname']."
"; echo "Email: ".$row['email']."
"; echo "
"; } print ""; print ""; print ""; print " " ; print " " ; print " " ; print " " ; while ($r = mysql_fetch_array($avg)) { print " " ; } print " "; print "
subject gradeone gradetwo gradethree average
"; print $row["subject"]; print ""; print $row["gradeone"]; print ""; print $row["gradetwo"]; print ""; print $row["gradethree"]; print ""; print $r['average']; print "
"; }?>

Il risultato desiderato dovrebbe assomigliare a questo

Risultato desiderato il risultato del seguente codice è ottimo, ma c’è solo un problema minore.

il secondo ciclo while suppone di calcolare la media e di emettere ogni record in una nuova riga. invece fa questo:

Risultato sbagliato

Qualcuno sa come fare in modo che ognuno di quei voti medi vada d’accordo con ogni riga per gli studenti?

 $q = mysql_query(" SELECT n.id, n.firstname, n.lastname, n.email, g.gradeone, g.gradetwo, g.gradethree, ((g.gradeone + g.gradetwo + g.gradethree) / 3) AS average FROM newstudent n JOIN grades g USING (id) ORDER BY n.id ") or die (mysql_error()); 

Prova a utilizzare questa query e quindi invia i risultati in un unico ciclo, rimuovilo

 while ($r = mysql_fetch_array($avg)) 

con le sue parentesi graffe.

Lascia qualcosa del genere:

 .... print "$row['gradetwo']"; print "$row['gradethree']"; print "$row['average']"; ....