Interesting database structure.
Assuming you are starting with a city_id and a distance, you could do something like:
FROM courses AS c
INNER JOIN distances_between AS db ON db.course_id = c.id
WHERE db.city_id = 123 -- Replace with your City ID
AND db.distance < 123; -- Replace with your Max Radius
Now, I'm wondering why your database is structured this way. It would be infinitely more useful if you had an address or latitude / longitude stored for each course. That way, you could give exact distances not only from major cities, but from any specific location (zip code, address, cell phone w/ GPS, etc), as well as plot the course on a map and list driving directions to get there.
Just some thoughts... obviously you know the solution you have to build, and can structure it however you need to. I always like to think of possible future additions of features when architecting something though.