mostrando la distancia más larga para cada bicicleta y un ícono verde si es más de 100

Le pedí una versión más simple de esta pregunta en la fecha y millas cuando tenía más de 100; de lo contrario, volvería al semáforo en rojo y luego me di cuenta de que simplifiqué demasiado mi consulta.

Hice una nueva pregunta porque se proporcionó una solución a mi pregunta original, pero hice la pregunta incorrecta.

Aquí está el jist:

Tuve el objective tonto de montar un siglo en cada bicicleta este año.

Quiero crear un tablero de estado que tenga cada bicicleta con un ícono que indique que ya está hecho, verde para sí, rojo para no.

Además, si es así, quiero rellenar ride_date y ride_miles.

El segundo criterio es bastante fácil de hacer, la consulta SQL que tengo es:

SELECT r.bike_name, r.ride_date, r.ride_miles FROM rides r JOIN bikes b on r.bike_name=b.bike_name WHERE DATE_FORMAT(r.ride_date, '%Y')='$current_year' and r.ride_user = '$athlete' and b.bike_retired = 'No' AND ride_miles > 100 

Experimenté con las UNIONES de mi otra pregunta y agregué mi cláusula where a la unión. Funcionaron bien si yo era el único usuario en la mesa y no tuve que verificar si la bicicleta estaba retirada. Una vez que agregué esas porciones, todo se echó a perder y una vez más estoy perdido.

Una vez que puedo recuperar los datos correctos, puedo usar PHP para darle masajes. Sigo pensando que necesito un ORDER BY.

Use IF para devolver un color diferente dependiendo de si se ha alcanzado el umbral.

 SELECT r.bike_name, r.ride_date, r.ride_miles, IF(r.ride_miles > 100, 'green', 'red') AS color FROM rides AS r JOIN bikes AS b ON r.bike_name = b.bike_name WHERE YEAR(r.ride_date) = $current_year AND r.ride_user = '$athlete' AND b.bike_retired = 'No'