Hola jona86:
El día de ayer se presentó una pregunta similar en este foro:
http://www.forosdelweb.com/f86/consu...acion-1154459/
En tu caso pasa lo mismo, al hacer el JOIN, echas a perder el filtro de la edad... y la solución es la misma, aplicar una condición IN o EXISTS con una subconsulta para los ciclistas de 23 años, algo así:
Código:
SELECT a.ciclista, a.anio, a.puntos, b.id
FROM ciclismofem_ranking a
INNER JOIN ciclismofem_ciclistas b ON a.ciclista = b.id
WHERE
a.anio=$temporada AND
a.ciclista IN (Aquí seleccionas a los ciclistas que tengan 23 años)
ORDER BY puntos DESC
haz la prueba y nos comentas. Si continuas con problemas postea cuál es la estructura de tus tablas y pon algunos datos de ejemplo y con gusto te ayudamos a resolver el problema.
y finalmente, puedes observar que hice algunos cambios adicionales en tu consulta, como recomendaciones:
1. No hagas JOINS implícitos, sino utiliza los JOIN's (LEFT, RIGTH o INNER según sea el caso) de manera explícita, es decir
En lugar de esto:
Código:
...
FROM tabla1, tabla2
WHERE tabla1.campo = tabla2.campo
...
Haz esto
Código:
...
FROM tabla1
INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
...
2. No es necesario que pongas tantos paréntesis, ya que en tu caso son todos completamente inútiles.
3. La palabra reservada AS también es completamente inútil y sólo se conserva por cuestiones de compatibilidad, pero no es necesario ponerla para especificar un alias.
Saludos
Leo.