Ho pensato intanto di semplificare la cosa facendo una join su due tabelle anzichè tre.
Quindi riassumendo ho queste tabelle:
Tabella 'iscrizioni':
id_iscrizione
username
Tabella 'livelli':
id_livello
nome_livello
posizione
Tabella 'livelli_iscrizioni':
id_livelli_iscrizioni
id_iscrizioni
id_livello
dataorario_inserimento
In pratica gli iscritti raggiungono dei livelli e questi ultimi sono ordinati per 'posizione'.
Quando un iscritto raggiunge un livello ciò viene inserito nella tabella 'livelli_iscrizioni' registrando la 'dataorario_inserimento'.
Nella classifica a me serve far apparire per primo chi ha raggiunto il livello con la posizione più alta,
a parità di livelli raggiunti dovrà apparire prima chi lo ha raggiunto per primo.
Quindi ora sto provando questa query:
purtroppo ORDER BY l.posizione è come se non esistesse e considera solo l'ordinamento per dataorario_inserimento.codice:SELECT DISTINCT (li.id_iscrizione) FROM livelli_iscrizioni AS li INNER JOIN livelli AS l ON l.id_livello = li.id_livello ORDER BY l.posizione DESC,li.dataorario_inserimento ASC
Incomincia a venirmi il sospetto che con distinct fare un ordinamento così non va tanto bene![]()