Ho capito il procedimento e se lo applico non mi dà più errore di sintassi... Però evidentemente c'è un errore di concetto nel mio codice, perchè non li ordina per data. Ci sono alcuni while internati, quindi è probabile che stia lì l'errore.

In pratica devo prendere una sola volta i docenti, estrarre la loro data più recente. Tra tutte le date estratte in questo modo, devo ordinarle in modo da visualizzare il docente più recente.

In uno schema semplificato, questo è il mio codice:

Codice PHP:
//Estraggo i docenti, raggruppandoli in modo che non si ripetano, e li ordino per data
//Il limite serve per suddividere i record in più pagine nella visualizzazione, ma non influisce
$query_limit mysql_query("SELECT * FROM Accesso_voti GROUP BY Docente_cognome, Docente_nome ORDER BY Data_accesso LIMIT $primo$per_page");
while(
$row=mysql_fetch_assoc($query_limit)){
//estraggo nome e cognome

  //Cerca tutte le occorrenze del docente e prende la sua data più recente
  
$q4 "SELECT * FROM Accesso_voti WHERE Docente_cognome='$cognome' AND Docente_nome='$nome' ORDER BY Data_accesso desc limit 1";
  
//estraggo la data