Si no me he equivocado con los campos (no la he probado), esta consulta te sacará el orden de clasificación de la carrera cuyo id_carrera es 2.
Código sql:
Ver originalSELECT p.piloto, SUM( cl.puntosposicion ) puntos
FROM `clasificaciones` cl
INNER JOIN pilotos p ON cl.refidpiloto = p.id_piloto
INNER JOIN carreras ca ON cl.refidcarrera = ca.id_carrera WHERE ca.id_carrera =2
GROUP BY p.id_piloto
ORDER BY puntos DESC
Si quieres la suma total de todas las carreras
Código sql:
Ver originalSELECT p.piloto, SUM( cl.puntosposicion ) puntos
FROM `clasificaciones` cl
INNER JOIN pilotos p ON cl.refidpiloto = p.id_piloto
INNER JOIN carreras ca ON cl.refidcarrera = ca.id_carrera
GROUP BY p.id_piloto
ORDER BY puntos DESC
Si quieres las de un año o temporada
Código sql:
Ver originalSELECT p.piloto, SUM( cl.puntosposicion ) puntos
FROM `clasificaciones` cl
INNER JOIN pilotos p ON cl.refidpiloto = p.id_piloto
INNER JOIN carreras ca ON cl.refidcarrera = ca.id_carrera WHERE ca.temporada='2008-2009'
GROUP BY p.id_piloto
Si por equipos
Código sql:
Ver originalSELECT e.quipo, SUM( cl.puntosposicion ) puntos
FROM `clasificaciones` cl
INNER JOIN pilotos p ON cl.refidpiloto = p.id_piloto INNER JOIN equipos e ON p.refidequipo = e.id_equipo
INNER JOIN carreras ca ON cl.refidcarrera = ca.id_carrera GROUP BY p.id_equipo
ORDER BY puntos DESC
Y así...
Claro, esto te da el orden. Para ponerle 1º, 2º etc, yo te aconsejaría que lo hicieras con programación. Pero eso va después y la consulta la deberás hacer en el foro de tu programa.